【发布时间】:2020-04-07 01:28:30
【问题描述】:
这里是真正的 python 菜鸟,看到这个嵌套的 if/else 单行器的结果我有点困惑:
>>> num_arr = [5, 10, 15]
>>> [i**2 if i == 10 else i-5 if i < 7 else i+5 for i in num_arr]
[0, 100, 20]
结果不应该是[0, 15, 20],因为 10 大于 7?
【问题讨论】:
-
测试是从左到右评估的,所以
i==10在i < 7之前得到测试 -
你可以用一对括号来解决这个问题:
[(i**2 if i == 10 else i-5) if i < 7 else i+5 for i in num_arr]。
标签: python python-3.x if-statement