在 Python 中,if-else 语句可以结合赋值操作,实现条件赋值,以下是几种常见的实现方式,从基础到高级:

基础条件赋值(使用 if-else 语句块)
x = 10
if x > 5:
result = "大于5"
else:
result = "小于等于5"
print(result) # 输出: "大于5"
三元运算符(value_if_true if condition else value_if_false)
适用于简单的条件赋值,一行代码完成:
x = 10 result = "大于5" if x > 5 else "小于等于5" print(result) # 输出: "大于5"
嵌套条件赋值
处理多个条件时,可以嵌套 if-else:
x = 10
if x > 10:
result = "大于10"
elif x == 10:
result = "等于10"
else:
result = "小于10"
print(result) # 输出: "等于10"
使用字典映射(适用于多条件)
通过字典映射条件到值,代码更简洁:
x = 10
result = {
x > 10: "大于10",
x == 10: "等于10"
}.get(True, "小于10") # 注意:条件按顺序匹配,第一个为真的键返回值
print(result) # 输出: "等于10"
结合列表推导式(批量条件赋值)
对列表中的每个元素进行条件赋值:

numbers = [1, 2, 3, 4, 5] results = ["偶数" if x % 2 == 0 else "奇数" for x in numbers] print(results) # 输出: ['奇数', '偶数', '奇数', '偶数', '奇数']
使用 lambda 函数(动态条件赋值)
x = 10 assign = lambda condition, true_val, false_val: true_val if condition else false_val result = assign(x > 5, "大于5", "小于等于5") print(result) # 输出: "大于5"
注意事项
- 变量作用域:在
if-else块中赋值的变量,其作用域取决于是否在函数内(局部变量)或全局作用域。 - 短路求值:三元运算符中,
if和else的部分只会执行其中一个。 - 可读性:复杂条件建议使用
if-else块而非嵌套三元运算符。
示例对比
# 方法1:if-else 块
def assign_value(x):
if x > 5:
return "大"
else:
return "小"
# 方法2:三元运算符
assign_value = lambda x: "大" if x > 5 else "小"
# 方法3:字典映射
assign_value = {True: "大", False: "小"}.get
print(assign_value(10)) # 输出: "大"
根据场景选择合适的方式,简单条件用三元运算符,复杂逻辑用 if-else 块。
