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)吗?
在生成器表达式(或列表推导)中,应该列出语句,就像嵌套它们一样.
您的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)