🐍 Python 三元表达式 | 一行代码装 X 大全 ⚡️

80 阅读1分钟

if...else 写三行?
三元表达式只要一行!
🤏

微信图片_20251014151033_10_20.jpg

1️⃣ 基础语法:先背口诀 🧠

口诀结果A if 条件 else 结果B

score = 82
level = '优秀' if score >= 80 else '良'
print(level)   # 优秀

“口诀背完,头发不掉”📖🦲


2️⃣ 嵌套三元:套娃一时爽 🔥

# 把成绩分三档
level = ('优秀' if score >= 90 else
         '良'   if score >= 75 else
         '加油')

⚠️ 注意:

  1. 最多嵌套两层,三层以上容易被打👊
  2. 加括号自动换行,PEP8 不找你麻烦✅

3️⃣ 与 lambda 合体:匿名函数也要秀 🕶️

f = lambda x: '偶数' if x % 2 == 0 else '奇数'
print(f(7))  # 奇数

4️⃣ 列表推导 + 三元:批量改造神器 🚀

nums = [7, 4, -3, 9]
# 负数变 0,其他平方
result = [x**2 if x > 0 else 0 for x in nums]
print(result)  # [49, 16, 0, 81]

5️⃣ 字典三元:一键切换双模式 🎛️

debug = True
config = {'log': 'debug' if debug else 'warning', 'timeout': 5}
print(config)  # {'log': 'debug', 'timeout': 5}

6️⃣ 容易踩的坑 ⚠️

坑点错误示例正确打开
忘写 elsea if x>0a if x>0 else b
优先级懵逼1 + x if x else 0 实际=(1+x) if x else 0想先三元再加括号包起来👈

7️⃣ 性能对比:三元 VS 普通 if

import timeit

# 三元
timeit.timeit("y = 1 if x else 0", "x=1", number=10**7)
# 普通 if
timeit.timeit("""if x:\n    y=1\nelse:\n    y=0""", "x=1", number=10**7)

结果:三元略快,但差距微秒级——
重点是省行数,不是省 CPU🤏


🎯 总结口诀(背它!)

A if 条件 else B
嵌套别过俩,括号要戴好
列表推导一起用,代码秒变 优雅怪 💅