我只是偶然发现了python语法中似乎有缺陷的地方-否则我就错过了一些东西。
看到这个:
[x for x in range(30) if x % 2 == 0]
但这是一个语法错误:
[x for x in range(30) if x % 2 == 0 else 5]
如果有else
子句,则必须编写:
[x if x % 2 == 0 else 5 for x in range (30)]
但这是一个语法错误:
[x if x %2 == 0 for x in range(30)]
我想念什么?为什么如此不一致?
您在这里混合语法。这里有两个不同的概念在起作用:
列表理解语法。这里if
充当过滤器;是否在迭代中包含一个值。没有else
,因为这是“不包括”的情况。
一个条件表达式。这必须始终返回一个值,即'true'或'false'表达式的结果。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句