【发布时间】:2016-11-12 07:45:22
【问题描述】:
只是为了好玩和好奇,我设计了这种方式来编写一个计数到无穷大的生成器,至少在原则上是这样。没有什么非常pythonian。随便玩玩。
但显然,lis 每次迭代都会变长,直到最终出现问题。
还有其他(更好或更坏)的方法可以实现相同的目标吗?请分享。
lis = [1]
gen = ((k, lis.append(k+1))[0] for k in lis)
使用它
for j in gen:
print(j)
【问题讨论】:
-
for i in itertools.count(1): print(i)... ?请参阅docs,其中还包含等效的 Python 代码... -
@TigerhawkT3 不确定这是最好的欺骗目标(我一直在寻找一个)——因为它主要关注无限重复的序列(尽管一个答案确实简要提到了
itertools.count)——而不是无限递增序列... -
如果要在内存中保存一个列表,为什么还要使用生成器?
-
@JonClements - 这个问题只要求“无限元素”,
itertools.count()是投票率最高的答案中的第一个建议。它不是 100% 专注于只增加序列以完全排除静态循环,但我不认为这是一个缺陷。 -
@TigerhawkT3 引用 OP:我设计了这种方式来编写一个无穷大的生成器 [...] 还有其他(更好或更坏)的方法吗实现相同的目标? 我将 count 与 infinite iterable 区分开来。
标签: python python-3.x