Chun a i:python:在列表中为i打印i

当我打印列表时,使用此方法时出现语法错误:

print i for i in [1,2,3]

我知道这是确定使用这种方法时:

for i in [1, 2, 3]:
    print i

我知道

(i for i in [1, 2, 3])

是一个生成器对象,但我只是不明白为什么

print i for i in [1, 2, 3] 

不起作用。有人能给我一个线索吗?

8

列表理解语法x for x in ...需要括号。这是 Python 的语法规则,就像要求缩进或在if之后要求冒号一样。i for i in [1, 2, 3]本身不是有效的语法。您需要[i for i in [1, 2, 3]](用于列表理解)或(i for i in [1, 2, 3])(用于生成器理解)。

3

在 Python 2 中,print是语句,而不是表达式或函数,因此您不能直接在理解中使用它。

def f(x): print x
[f(i) for i in [1,2,3]]

请注意,(f(i)...)不起作用,因为这只是创建一个生成器,如果您迭代它,它将调用f()。列表理解[]实际上调用f()

[EDIT]如果您使用 Python & gt;2.6,则可以使用

from __future__ import print_function
[print(i) for i in [1, 2, 3]]

注意print参数周围的()

3

列表理解语法 ([expression for loop]) 是生成列表的速记循环语法。

由于您没有生成 python 列表,因此您必须使用常规循环。

或者,由于您所做的只是在单独的行上打印项目,只需自己添加换行符:

print '\n'.join(i for i in [1, 2, 3])

这会产生相同的输出:

for i in [1, 2, 3]:
    print i

如果您使用 Python 3,或者在模块顶部使用from __future__ import print,然后使用print()函数,则可以在一次调用中将所有值发送到该函数,并告诉print()在两者之间使用换行符:

values = [1, 2, 3]
print(*values, sep="\n")
1

作为expression(在语法中):

[i for i in [1, 2, 3]]是一个列表理解。

(i for i in [1, 2, 3])是一个生成器表达式。

但是i for i in [1, 2, 3]本身就是一个语法错误,这就是它的方式。它周围一定有一些东西。除非你有([,否则它不是一个有效的expression,因为for关键字在这一点上是无效的。

print statement里面,它想要一个expression

(作为一个红鲱鱼,func(i for i in [1, 2, 3])被允许作为一个表达式,是一个函数调用,第一个参数是一个生成器表达式。)

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(729)
服务器远程命令:XCOPY到远程服务器(xcopy guide)
上一篇
维c精华推荐:推荐用于简单一维场景的异常检测技术
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(46条)