【发布时间】:2016-01-08 04:41:38
【问题描述】:
为什么以及如何工作?例如,我正在编写这样的列表理解:
>>> a = (10, 30, 20)
>>> print([q for q in a])
[10, 30, 20]
现在,如果我删除 [],这也可以,但是:
>>> a = (10, 30, 20)
>>> print(q for q in a)
<generator object <genexpr> at 0x7fe527d1dca8>
Python 在这里制作生成器吗?如果我在没有print() 的情况下这样做:
>>> a = (10, 30, 20)
>>> b = q for q in a
File "<input>", line 1
b = q for q in a
^
SyntaxError: invalid syntax
我在考虑因为(q for q in a) 会做一个生成器,但那是不可能的,但是我没有使用两对(),比如:
>>> a = (10, 30, 20)
>>> print((q for q in a)) # here is two pair of `()`
<generator object <genexpr> at 0x7fe527d1dca8>
【问题讨论】:
-
如果您想打印项目,而不是生成它们的生成器对象,请尝试
print(*(q for q in a))。*将项目解包为函数的参数。 (不过,对于这个特定的生成器,您只需执行print(*a)并完成它。) -
它的工作原理与任何其他函数完全相同,sum, max, min ....
标签: python python-3.x list-comprehension