如何在M/PowerQuery列表中按索引位置选取多个元素
M语言列表多元素选取方法
M语言(Power Query 公式语言)没有提供类似其他编程语言的:切片运算符,也不支持直接在{}下标内传入多个索引取值,你可以通过内置的List系列函数实现对应需求,以下是不同场景的实现方式:
按指定多个索引提取元素
如果你需要提取任意指定索引(支持不连续)的元素,可以通过List.Transform遍历索引列表取值:
示例:从{"A", "B", "C"}中提取索引0和2对应的元素
let 源 = {"A", "B", "C"}, 目标索引列表 = {0, 2}, 结果 = List.Transform(目标索引列表, (idx) => 源{idx}) in 结果
上述代码返回结果为{"A", "C"}
提取连续区间元素
如果要实现切片效果,使用List.Range函数即可,语法为List.Range(待处理列表, 起始索引, 提取长度),省略提取长度参数时会默认从起始索引取到列表末尾。
示例:提取索引1到末尾的所有元素
List.Range({"A", "B", "C"}, 1)
返回结果为{"B", "C"}
补充便捷函数:
- 提取前N个元素:
List.Take(列表, N) - 跳过前N个元素取剩余内容:
List.Skip(列表, N)
按值条件筛选元素
如果需要按元素本身的取值规则筛选,使用List.Select函数:
示例:筛选所有不等于"B"的元素
List.Select({"A", "B", "C"}, (item) => item <> "B")
返回结果为{"A", "C"}
内容的提问来源于stack exchange,提问作者rmae19
相关产品推荐
相关产品推荐

