Python list 生成式(推导式list comprehension)中嵌套if else

在list生成式中嵌套if else

如果按中文习惯写嵌套列表生成式可能写出如下的错误语法

>>> [x for x in range(1, 10) if x % 2 else x * 100]
  File "<stdin>", line 1
    [x for x in range(1, 10) if x % 2 else x * 100]
                                         ^
SyntaxError: invalid syntax

Python的语法是按英文阅读方式设计的,因此,正常的方式应该是

>>> [ x if x%2 else x*100 for x in range(1, 10) ]
[1, 200, 3, 400, 5, 600, 7, 800, 9]

或者用更简洁的形式[false,true][condition] is the syntax

>>> [[x*100,x][x %2] for x in range(1,10)]
[1, 200, 3, 400, 5, 600, 7, 800, 9]

更多阅读

通过示例学习Python列表推导
if/else in Python's list comprehension?
python one-line list comprehension: if-else variants
if else in a list comprehension [duplicate]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容