You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

列表推导式多条件判断疑问:为何1变3、2不变、3变6?

解析Python列表推导式的多条件逻辑问题

我在学习Python列表推导式时,了解到可在其中添加多个条件判断。我无法理解当前运行结果的逻辑:为何元素1变为3、元素2保持2、元素3变为6?

对应的代码:

a = [x if x % 2 == 0 else x * 2 if x % 3 == 0 else x * 3 for x in range(1, 11)]

运行输出:

[3, 2, 6, 4, 15, 6, 21, 8, 18, 10]

逻辑拆解

这个列表推导式本质是嵌套的三元表达式,判断顺序从左到右优先级依次降低,等价于下面的普通循环代码:

a = []
for x in range(1, 11):
    if x % 2 == 0:
        a.append(x)
    else:
        if x % 3 == 0:
            a.append(x * 2)
        else:
            a.append(x * 3)

逐个分析你疑惑的几个元素:

  • x=1:1除以2余1(不满足x%2==0),1除以3余1(也不满足x%3==0),所以执行最后一个分支x*3,得到1*3=3;
  • x=2:2除以2余0(满足第一个条件x%2==0),直接取x本身,结果为2;
  • x=3:3除以2余1(不满足第一个条件),但3除以3余0(满足第二个条件x%3==0),所以执行x*2,得到3*2=6;

你可以对照这个逻辑,逐个验证输出列表里的其他元素,就能完全理解整个推导式的执行顺序了。

内容的提问来源于stack exchange,提问作者Lumos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 04:45:44