Python函数或语法糖返回生成器表达式的所有元素?
给定一个(有限的)生成器表达式,我想要通过一次函数调用来获取生成器表达式中的所有元素。
>>> 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
我觉得这是最好的解决方案。
a = [i for i in range(1, 101)]
print a
[1, 2, 3, ..., 100]
4
你可以直接把它变成一个列表,方法如下:
list(a)
示例
a = (i for i in range(1,101))
print list(a)
[1, 2, 3, ..., 100]
实际上,因为在这个情况下你是把项目放进一个列表里,所以你也可以用列表推导式来实现:
a = list(range(1, 101))
现在,a
是一个列表,而不是一个生成器对象。