【发布时间】:2011-08-09 21:08:27
【问题描述】:
是否有可以产生无限迭代器的直接表达式?
这是一个纯粹的理论问题。这里不需要“实用”的答案:)
例如,很容易使用生成器表达式来制作有限迭代器:
my_gen = (0 for i in xrange(42))
但是,要创建一个无限的,我需要用一个虚假的函数“污染”我的命名空间:
def _my_gen():
while True:
yield 0
my_gen = _my_gen()
在一个单独的文件中做事,之后import-ing 不算。
我也知道itertools.repeat 正是这样做的。我很好奇是否有没有它的单线解决方案。
【问题讨论】:
-
你实际上不需要污染你的命名空间......只需将函数命名为
my_gen,然后执行my_gen = my_gen()。 -
如果不想混淆两者,也可以使用
del _my_gen
标签: python iterator generator infinite-loop