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

Python function or syntactic sugar to return all elements of a generator expression?

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

1
2
3
4
5
6
7
>>> a = (i for i in range(1,101))
>>> a
<generator object <genexpr> at 0x101873460>
>>> a.next()
1
>>> a.next()
2

换句话说,我想避免像这样的循环:

1
2
for i in a:
    print i

,而是为循环添加语法糖:

1
a.all() # or the like

我看着itertools,但我不清楚是否存在这样的东西。


您可以根据以下内容创建一个列表:

1
list(a)

例子

1
2
3
4
a = (i for i in range(1,101))

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

事实上,由于在这种情况下您要将项目放入列表中,因此您还可以使用列表理解:

1
a = list(range(1, 101))

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


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

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