为了好玩和出于好奇,我设计了这种编写一个计算无限的发生器的方法,至少原则上如此。没什么非常蟒蛇的。只是在玩耍。
但很明显,每次迭代lis
都会变长,直到某些东西最终破裂。
是否有其他(更好或更差)的方法来实现相同的目标?请分享。
lis = [1]
gen = ((k, lis.append(k+1))[0] for k in lis)
使用它
for j in gen:
print(j)
答案 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
>>>