Kev*_*uan 1 python list-comprehension python-3.x
为什么以及如何运作?例如,我正在写这样的列表理解:
>>> a = (10, 30, 20)
>>> print([q for q in a])
[10, 30, 20]
Run Code Online (Sandbox Code Playgroud)
现在,如果我删除了[],这也可以,但是:
>>> a = (10, 30, 20)
>>> print(q for q in a)
<generator object <genexpr> at 0x7fe527d1dca8>
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
我正在考虑因为(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>
Run Code Online (Sandbox Code Playgroud)
Python会在这里制作一个生成器吗?
是.引用Generator表达式的官方文档,
对于只有一个参数的调用,可以省略括号.
请注意,这是实际语法的唯一例外
generator_expression ::= "(" expression comp_for ")"
Run Code Online (Sandbox Code Playgroud)
所以,当你这样做的时候
b = q for q in a
Run Code Online (Sandbox Code Playgroud)
Python无法解析它,因为它不是有效的Python表达式.这就是为什么你得到一个SyntaxError.
如果你真的想要打印生成器表达式中的所有元素,你可以将它的结果解压缩到print函数中,正如Blckknght所建议的那样,就像这样
>>> a = (10, 30, 20)
>>> print(*(q for q in a))
10 30 20
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |