List.Transform

官方说明:

通过将转换函数 transform 应用到列表 list 来返回值的新列表。
List.Transform( list as list, transform as function) as list

案例1:

基础用法,用each _(x)=> x的组合对原list转换,此时两种方法等价。实际中数据多是table结构,而List.Transform最终返回的是一个list,如果要对表中的某一列转换请用Table.TransformColumns

list2= List.Transform(源[list],each 10),              //把原来的list每一个元素都转换成10
list3= List.Transform(源[list],each _+10),            //将原list每一个元素+10
list4= List.Transform(源[list],(x)=>x+10),            //同上

案例2:

如果你看到如=List.Transform({1..2},Text.From)这种写法,一定会问这里为什么没有each也没有_,Text.From也不用()?
注意第二参数为function,所以我们可以直接丢一个函数名进去,等价于=List.Transform({1..2},each Text.From(_))
适用于必需参数只有一个的情况,常用于数据类型转换。

案例3:

构建list,然后将list中的每一个元素带入另一个公式中,返回运算结果的新list,有点for each in的意思。
比如网页URL为https://pqfans.com/?page1,其中1代表页码,为了获得1-10页所有URL的集合,我们可以构建{1..10}的list,而这个list是表中本身不存在的。
=List.Transform({1..10},each "https://pqfans.com/?page"&Text.From(_))
常用于获取网抓、隔行/列选取指定范围等,很常见也很好用。

案例4:

配合索引,如图

= List.Transform(List.Positions(源[名称]),each 源[数量]{_})
为了获取索引,我们常用List.Positions(){0..Table.RowCount()-1}的组合,得到{0..6}的list,然后将list中每一个元素带入后面的索引,得到[数量]这一列的每一项数据。
在这个案例中看起来有点多此一举,但在一些复杂的案例中,List.Transform配合索引的用法非常常见。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注