三元表达式
Python没有其他语言的三元表达式(三目运算符)相关说法,但有类似语法。在 Python 中,三元表达式是一种语法结构,一般叫做条件表达式,结构如:
表达式(1)为True执行语句 if 条件表达式(1) else 表达式(1)为False执行语句
一、用于 if 语句简化:
例:判断是否成年:
age = 20
if age >= 18 :
cn = "成年"
else:
cn = "未成年"
将简单 if 语句缩减为一行代码:
age = 20
cn = "成年" if age >= 18 else "未成年"
二、返回多个语句:
age1 = 14
cn1 = ("成年", age1) if age1 >= 18 else ("未成年",age1)
age2 = 20
cn2 = age2, "成年" if age2 >= 18 else "未成年"
age3 = 14
cn3 = age3, "成年" if age3 >= 18 else "未成年"
print(cn1)
print(cn2)
print(cn3)
# 输出结果:
#
# ('未成年', 14)
# (20, '成年')
# (14, '未成年')
三、在函数内部使用三元表达式:
例:判断奇数偶数:
def even_num(num):
return True if num % 2 == 0 else False
四、用于列表推导式:
li = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
ret1 = [i for i in li if i % 2 == 0]
ret2 = [i if i % 2 == 0 else None for i in li]
print(list(ret1))
print(list(ret2))
# 输出结果:
#
# [2, 4, 6, 8, 10]
# [None, 2, None, 4, None, 6, None, 8, None, 10]
五、三元表达式与 lambda 函数:
例:声明一个函数,返回较大值:
def max(a, b):
if a > b:
ret = a
else:
ret = b
return ret
r = max(5, 6)
print(r)
# 输出结果:
#
# 6
lambda 函数与三元表达式的混合:
max = lambda a, b: a if a > b else b
r = max(10, 15)
print(r)
# 输出结果:
#
# 15
六、嵌套使用:判断不小于 20 的奇数偶数:
ret = [ (num, "小于20") if num < 20 else ((num ,
"奇数") if num % 2 == 1 else (num,
"偶数")) for num in list(range(15,25))]
print(ret)
# 输出结果:
#
# [(15, '小于20'), (16, '小于20'), (17, '小于20'), (18, '小于20'),
# (19, '小于20'), (20, '偶数'), (21, '奇数'), (22, '偶数'),
# (23, '奇数'), (24, '偶数')]
七、扩展使用:
1. 元组条件表达式:
for age in list(range(15,20)):
cn = ((age, "未成年"),(age, "成年"))[age >= 18]
print(cn)
# 输出结果:
#
# (15, '未成年')
# (16, '未成年')
# (17, '未成年')
# (18, '成年')
# (19, '成年')
2. 字典条件表达式:
for age in list(range(15,20)):
cn = {False: (age, "未成年"), True: (age, "成年")}[age >= 18]
print(cn)
# 输出结果:
#
# (15, '未成年')
# (16, '未成年')
# (17, '未成年')
# (18, '成年')
# (19, '成年')