欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python中列表生成式中的if和else

程序员文章站 2024-01-06 14:02:28
...

1. 当只有 if 时,列表生成式构造为 [最终表达式 - (范围选择 - 范围过滤)]

>>> [num ** 2 for num in range(10) if num % 2 == 0] 
[0, 4, 16, 36, 64]

如果 if 和 for 的位置调换,则会报错。

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

2. 当同时有 if 和 else 时,列表生成式构造为 [最终表达式 - 条件分支判断 - 范围选择]

>>> [num ** 2 if num % 2 == 0 else 0 for num in range(10)]
[0, 0, 4, 0, 16, 0, 36, 0, 64, 0]

如何 if 和 for 的位置调换,则会报错。

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

官方文档并没有提及到这个。我就说一下我的理解方法。

1,python解释器看到列表生成式会先找关键字 for,for 后面的部分是为了筛选需要显示的数字,for 前面的表达式则是对这些数字进行进一步加工。

2,当只有 if 而没有 else 时,此时迭代器 range 里面的元素会被筛选,只有偶数才会进行下一步操作;筛选好之后,再进行平方操作。这里if的作用是为了筛选。

3, 当同时有 if 和 else 时,此时迭代器中的所有元素都将会在下一步被处理,然后就是偶数的进行平方,奇数的显示为0。这里 if 和 else 的作用则是为了进行不同条件下的处理。

上一篇:

下一篇: