赞
踩
value_if_true if condition else value_if_false
- # 三元运算符相当于下面的条件语句
- if condition:
- value_if_true
- else:
- value_if_false
三元表达式可以将简单的 if 语句 缩减为一行代码。
- # 根据输入的年龄,判断是否成年?
- age = int(input('请输入您的年龄:'))
-
- if age >= 18:
- cn = '成年'
- else:
- cn = '未成年'
-
- print('您是{}人'.format(cn))
'运行
- # 根据输入的年龄,判断是否成年?
- age = int(input('请输入您的年龄:'))
-
- cn = '成年' if age >= 18 else '未成年'
-
- print('您是{}人'.format(cn))
'运行
- # 根据输入的年龄,判断是否成年?
- age = int(input('请输入您的年龄:'))
-
- cn = '成年','大于或等于18岁' if age >= 18 else '未成年'
-
- print(cn) # ('成年', '大于或等于18岁')或未成年
'运行
代码返回一个元组,内容为 ('成年', '大于或等于18')
,这里一定注意不要使用分号;,否则只返回第一个语句的结果。
有些简单的判定逻辑,可以直接使用三元表达式简化,例如判断传入参数是否为偶数。
- 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]
- print(ret1) # [2, 4, 6, 8, 10]
-
- # 三元运算符表达式
- ret2 = [i if i % 2 == 0 else None for i in li]
- print(ret2) # [None, 2, None, 4, None, 6, None, 8, None, 10]
'运行
三元运算表达式经常与列表推导式结合使用,是Python中两个高级的特性强强联合,写出来的代码非常优雅。当然,还可以举一反三地将三元运算表达式与字典推导式和集合推导式等组合使用。
Python 条件表达式可以嵌套使用,但是建议最多嵌套两层,而且是在代码简单的情况下,具体编码如下所示,你需要重点学习下述问题。
在嵌套的时候,还需要注意 if 和 else 配对问题。
- num = int(input('请输入数字:'))
- print('负数') if str(num)[0] == '-' else (print('大于等于100') if num >= 100 else print('小于100的正数'))
'运行
上面这行代码是一个嵌套的三元运算表达式,其中第一个 else 后面的语句是一个完整的三元运算语句,被作为一个整体当作外层三元运算表达式中的 false_expression ,如下图所示。
有时候可以将三元表达式与 lambda 进行结合,让代码变得更加简洁。
示例:声明一个函数,返回较大值
- def max(a, b):
- if a > b:
- ret = a
- else:
- ret = b
-
- return ret
-
- r = max(5, 6)
- print(r)
由于上述代码非常简单,可以直接使用 lambda 匿名函数实现。
- max = lambda a, b: a if a > b else b
- r = max(10, 15)
- print(r)
优点:
缺点:
综上所述,三元运算符的优缺点要视具体情况而定。在处理简单条件逻辑时,使用三元运算符可以使代码更加简洁高效;但在处理复杂逻辑或需要多个条件判断的情况下,应优先考虑使用if-else语句,以确保代码的可读性和可维护性。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。