使用if语句列表理解(或单行)

thk*_*ang -3 python if-statement list-comprehension

在python中,对于iterables,可以构造许多单行迭代命令.

对于某些此类迭代,需要if语句.

有时if语句和for语句的顺序很重要.假设我想找到0到10之间的奇数之和:

>>> sum(i if not i%2==0 for i in range(10))
SyntaxError: invalid syntax
>>> sum(i for i in range(10) if not i%2==0)
25
Run Code Online (Sandbox Code Playgroud)

这些单行本身不是很理解,但我真的不明白为什么if语句有来的for语句.使用前一个不是更合适的常识i if not i%2==0 for i in range(10)吗?

Mar*_*ers 5

在生成器表达式(或列表推导)中,应该列出语句,就像嵌套它们一样.

您的sum()表达式可以嵌套为:

for i in range(10):
    if not i%2 == 0:
        # do something with i
Run Code Online (Sandbox Code Playgroud)

你不能改变那个顺序,因为i没有定义,所以下面没有意义:

if not i%2 == 0:
    for i in range(10):
        # do something with i
Run Code Online (Sandbox Code Playgroud)