一个计数到无穷大的发电机

时间:2016-07-10 04:48:25

标签: python python-3.x

为了好玩和出于好奇,我设计了这种编写一个计算无限的发生器的方法,至少原则上如此。没什么非常蟒蛇的。只是在玩耍。

但很明显,每次迭代lis都会变长,直到某些东西最终破裂。

是否有其他(更好或更差)的方法来实现相同的目标?请分享。

lis = [1]
gen = ((k, lis.append(k+1))[0] for k in lis)

使用它

for j in gen:
    print(j)

2 个答案:

答案 0 :(得分:1)

您可以使用itertools.count

import itertools

for i in itertools.count(1):
    print(i)

从上面的文档中,这在功能上等同于:

def count(start=0, step=1):
    # count(10) --> 10 11 12 13 14 ...
    # count(2.5, 0.5) -> 2.5 3.0 3.5 ...
    n = start
    while True:
        yield n
        n += step

答案 1 :(得分:0)

只需使用itertools.count即可。这是一个例子:

>>> from itertools import count
>>> gen = count(0)
>>> next(gen)
0
>>> next(gen)
1
>>> next(gen)
2
>>> next(gen)
3
>>> next(gen)
4
>>>