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

0 投票
2 回答
767 浏览
提问于 2025-04-18 07:43

给定一个(有限的)生成器表达式,我想要通过一次函数调用来获取生成器表达式中的所有元素。

>>> 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 是一个列表,而不是一个生成器对象。

撰写回答