Python中是否有任何函数可以提供类似于Kotlin中的generateSequence的无限序列?
在Kotlin中,我可以做类似的事情:
generateSequence(1) { it + 1 }.take(5).forEach { println(it) }
显然,这会因整数溢出错误而停止,但是我想在Python中做类似的事情。
答案 0 :(得分:0)
您可以编写一个简单的generator
def count(x):
while True:
yield x
x += 1
for i in count(5):
print(i)
这个特殊的生成器内置itertools.count
import itertools
for i in itertools.count(5):
print(i)
答案 1 :(得分:0)
使用itertools.count()
获取一个count
对象,该对象生成无限的值序列。
您可以通过从count
对象中显式检索下一个项目所需次数来获取前一个 n 个项目。另外,最好使用itertools.islice()
提取前 n 个项目。
镜像您的示例,以使用显式迭代获取序列的前5个值:
from itertools import count
c = count(1) # start from 1 instead of 0
for i in range(5):
print(next(c))
或使用islice()
:
for n in islice(count(1), 5):
print(n)