理解语法不一致?

临时用户名

我只是偶然发现了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)]

我想念什么?为什么如此不一致?

马丁·彼得斯(Martijn Pieters)

您在这里混合语法。这里有两个不同的概念在起作用:

  • 列表理解语法。这里if充当过滤器;是否在迭代中包含一个值。没有else,因为这是“不包括”的情况。

  • 一个条件表达式这必须始终返回一个值,即'true'或'false'表达式的结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章