-
Notifications
You must be signed in to change notification settings - Fork 168
序列 Sequence
Toto Lin edited this page May 8, 2017
·
3 revisions
Sequence是一个可以用来通过一个函数或者一个表达式,制造各种序列的东西。
使用方法如下面代码所示:
Sequence(lambda i, f: 2*i+1) # f(i)=2*i+1
Sequence(lambda i, f: f(i-1) + 1, [0, 1]) # f(i)=f(i-1)+1, f(0)=0, f(1)=1
Sequence(lambda i, f: f(i-1) + 1, {100: 101, 102: 103}) # f(i)=f(i-1)+1, f(100)=101, f(102)=103
其第一个参数为一个lambda函数,该lambda函数的第一个参数i
代表这是序列的第几项,而第二个参数f
则是一个可以获取该数列任意一项的函数。
第二个参数则是一个数组或dict
,默认为空,是该序列的初始值列表。当这个序列的表达式中需要使用到f
(即,需要递归进去获取函数值)的时候,必须提供第二个参数,否则找不到初始值会陷入死循环。
我们可以对其做如下操作:
seq = Sequence(lambda i, f: f(i-1) + 2, [0, 2, 4])
seq.get(3) # 6
seq.get(4, 6) # [8, 10, 12]
io.input_write(seq.get(7, 10)) # 可以直接传递给IO库,写入14 16 18 20
文档
高级使用
贡献相关