在python中,对于迭代,可以构建许多单行迭代命令。带有if语句的列表理解(或单行)
对于某些此类迭代if-statements是必需的。
有时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
那些俏皮话本身不是很理解,但我真的不明白为什么if语句有后前来for语句。使用以前的i if not i%2==0 for i in range(10)
不是更符合常识吗?
你为什么要写'不是i%2 == 0'而不是'i%2!= 0'? – phihag
“这些单行本质上是不可理解的”是一个非常严格的一揽子声明。事实上,他们很容易理解,而且功能非常强大。 –
你实际上在说“就目前而言,列表解析的python语法不是很理解,我们不应该改变它是另一种方式吗?”。那么,有很多人成功地使用了Python的这一特性;所以它/是/可理解的。如果你不喜欢它,那么你总是可以自己修改解析器并将其作为PEP提出。当然,欢迎您随时查找/发明一种语言,让您以自己的方式表达列表理解。 – inspectorG4dget