list初始化_Power Query 生成列表的函数List.Generate函数简介

List.Generate函数

从名字就能看出来,这是一个生成列表的函数,这个函数奇特的地方在于,他的所有参数都要求是函数,我们之前见过很多函数,有用列表、记录、表做参数的,也有要用函数做参数的,但是全部参数都要求用函数的,这是第一次见:

List.Generate(

initial as function, condition as function, next as function, optional selector as nullable function) as list

四个参数分别是:

  • 初始化:初始化函数,给出列表初始值
  • 条件:一般是列表结束条件,控制列表长度
  • 生成:根据条件生成列表
  • 选择:选择最终结果

我们先来看一个简单的例子:

aae38dfd456e0dc51483ee1bf712c6cd.png

我们要做一个1-10的列表:

4e6771a721b19955214650cd9b3b9fa4.png

= List.Generate(()=>1,(x)=>x<=10,(x)=>x+1)

我们只用了三个参数:列表从1开始,列表元素要小于等于10,每个元素+1来生成列表,等于我们省略了第四参数:(x)=>x

f8bc12b82d23c8d6ac2f0ad70a60f762.png

我们把第四参数补上也是同样结果。

再来看一个复杂的例子:同样是1-10 列表

5ebe8cbc1b9d0ee016c41cb689c4ede8.png

= List.Generate(

()=>{1,0},(x)=>x{1}<=9,(y)=>{y{0}+1,y{1}+1},(z)=>z{0})

这次我们使用4各参数来生成列表:

  • 初始化:一个列表{1,0},第一个元素是我们要的列表值,第二个元素是列表角标
  • 条件:角标要小于等于9,0-9一共是10个值
  • 生成:值与角标同时都增加1
  • 选择:选择值

同样的我们也可以选择角标:

51fd0611c2b1ba3d652ee10d85d24451.png

我们把z{0}换成z{1}就获得了列表的角标。

希望通过这个例子,大家能对List.Generate函数有个大概的了解。

欢迎大家加入圈子参与讨论:

### 回答1: 在Power Query中,Each表达式的下划线在List.Transform函数List.Generate函数中的意义不同。 在List.Transform函数中,下划线表示当前元素,该函数列表中的每个元素一个一个地进行转换。 在List.Generate函数中,下划线表示当前循环次数,该函数将从初始值不断地循环生成新的元素,直到满足某个条件为止。 ### 回答2: 在Power Query中,each表达式中的下划线在List.Transform函数List.Generate函数中分别表示不同的含义。 在List.Transform函数中,下划线代表当前元素。List.Transform函数可用于对列表中的每个元素应用相同的转换操作。在每个转换操作中,通过使用下划线来引用当前正在处理的元素。例如,如果我们有一个列表[1, 2, 3],并希望将每个元素都乘以2,我们可以使用List.Transform函数和each表达式来进行操作,如下所示: List.Transform([1, 2, 3], each _ * 2) 运行结果为[2, 4, 6]。 而在List.Generate函数中,下划线则表示一个累加器。List.Generate函数用于生成一系列值,并在每次生成值时更新累加器。在每次生成值时,都可以使用下划线来引用当前的累加器值。例如,我们可以使用List.Generate函数生成一个从0到10的整数列表,如下所示: List.Generate(() => 0, each _ < 11, each _ + 1) 运行结果为[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]。 因此,在List.Transform函数中,下划线表示当前元素,而在List.Generate函数中,下划线表示一个累加器。根据具体情况,我们可以使用each表达式来应用相应的转换或生成操作。 ### 回答3: 在Power Query中,each表达式的下划线在List.Transform函数List.Generate函数中分别表示不同的含义。 在List.Transform函数中,each表达式的下划线表示一个占位符,用以表示列表中的每个元素。通过使用each表达式,我们可以对列表中的每个元素进行处理或转换。在Transform函数中,我们可以使用下划线来引用当前正在处理的元素,通过对其进行操作来生成新的列表。 举个例子,假设我们有一个包含数字的列表[1,2,3,4,5]。我们可以使用List.Transform函数来将列表中的每个元素乘以2,并生成一个新的列表。表达式可以写成List.Transform([1,2,3,4,5], each _*2),这里的下划线表示当前正在处理的元素。最终的结果将是[2,4,6,8,10]。 在List.Generate函数中,each表达式的下划线表示用以生成列表的每个元素。List.Generate函数会根据一些指定的条件和生成规则来生成一个新的列表。我们可以使用下划线来引用每一次生成的元素,并指定生成条件。 例如,假设我们想生成一个包含斐波那契数列的列表,我们可以使用List.Generate函数来完成。可以将表达式写成List.Generate(()=>[0,1], each List.Last(_)<=100, each List.Combine({_,[0]+_[1],_[0]+_[1]}))。在这个例子中,下划线用来引用生成列表元素。通过不断计算前两个元素的和来生成新的元素,直到列表中最后一个元素大于100为止。最终生成的斐波那契数列列表为[0,1,1,2,3,5,8,13,21,34,55,89]。 总之,在Power QueryList.Transform函数List.Generate函数中,each表达式的下划线分别表示列表中的每个元素和生成列表的每个元素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值