【发布时间】:2014-07-16 13:23:19
【问题描述】:
给定一个(有限的)生成器表达式,我想进行一个函数调用,返回生成器表达式的所有元素。
>>> a = (i for i in range(1,101))
>>> a
<generator object <genexpr> at 0x101873460>
>>> a.next()
1
>>> a.next()
2
换句话说,我想避免这样的循环:
for i in a:
print i
而是为循环添加语法糖:
a.all() # or the like
我查看了itertools,但我并不清楚这样的事情是否存在。
【问题讨论】:
-
如何处理永不结束的生成器表达式?即
def my_gen(): i = 0 while True: i = i+1 yield i -
你没有。在我所指的情况下,生成器是表达式是有限的。
-
生成器表达式
a可以是任意类型,而不仅仅是一个列表;它可以是 tuple、dict、set、frozenset 或任何其他/非内置类型。
标签: python generator lazy-evaluation syntactic-sugar