Python中的无限系列

时间:2018-11-15 02:38:23

标签: python kotlin

Python中是否有任何函数可以提供类似于Kotlin中的generateSequence的无限序列?

在Kotlin中,我可以做类似的事情:

generateSequence(1) { it + 1 }.take(5).forEach { println(it) }

显然,这会因整数溢出错误而停止,但是我想在Python中做类似的事情。

2 个答案:

答案 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)