Python函数或语法糖返回生成器表达式的所有元素?

时间:2014-05-27 14:55:21

标签: python generator syntactic-sugar

给定一个生成器表达式,我想进行一个函数调用,返回生成器表达式的所有元素。

>>> 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,但我不清楚这样的事情是否存在。

2 个答案:

答案 0 :(得分:4)

您可以创建一个列表:

list(a)

实施例

a = (i for i in range(1,101))

print list(a)
[1, 2, 3, ..., 100]

事实上,因为在这种情况下你将项目放入列表中,你也可以使用列表理解:

a = list(range(1, 101))

现在,a是一个列表而不是生成器对象。

答案 1 :(得分:0)

我认为这是最好的解决方案。

a = [i for i in range(1, 101)]
print a
[1, 2, 3, ..., 100]