在一个语法结构里,其中的条件表达式属于颇为简洁的那种, 它是能拿去实现条件判断的, 在单行代码当中能够实现这种条件判断。它有时候还会被叫做 "三元运算符", 或者被叫做 "三元表达式", 原因何在呢, 是由于它是立足于三个操作数进而做出决策的。
示例
以下是一些示例:
# 使用条件表达式选择最大值
x = 10
y = 20
max_value = x if x > y else y
print(max_value) # 输出 20
# 使用条件表达式检查奇偶数
num = 15
parity = "偶数" if num % 2 == 0 else "奇数"
print(parity) # 输出 "奇数"
# 使用条件表达式构建一个简单的函数
def greet(name):
message = f"Hello, {name}!" if name else "Hello, Guest!"
return message
print(greet("Alice")) # 输出 "Hello, Alice!"
print(greet("")) # 输出 "Hello, Guest!"
条件表达式常常被用于简单的条件判断, 在你有那样一种需求, 即于一行代码之中去挑选不一样的值, 或者执行不一样的操作的时候, 其是极为有帮助的。可是呢, 针对于繁杂的条件逻辑而言, 或许采用传统的if语句会更适宜一些, 以此来提升代码的可读性。
列表推导式
条件表达式, 能够被运用在列表推导式里头, 借助某个既定条件来对元素予以过滤, 着实极为便利且实用。举例而言, 给出一个数字所构成的列表, 从中提取出那些大于5的数字。
nums = [1, 5, 8, 3, 12, 6]
greater_than_5 = [num for num in nums if num > 5]
print(greater_than_5)
# [8, 12, 6]
这里的, if num > 5, 此为一个条件表达式, num呢, 是一个列表nums里的其中一个元素。
再举一个字符串列表的例子:
words = ['hello','world','python']
long_words = [word for word in words if len(word) > 5]
print(long_words)
# ['python']
如果想要求长度大于5的单词的大写形式:
long_words = [word.upper() for word in words if len(word) > 5]
# ['PYTHON']

归纳一下, 条件表达式能够让我们依据某些条件去挑选列表元素, 极为适宜在列表推导式里运用。条件表达式置于 if 关键字的后面, 借助返回 True 或者 False 从而去判定元素是不是被保留下来。
以下是更加复杂的:
grades = [85, 92, 78, 90, 88]
letter_grades = [ 'A' if score >= 90 else 'B' if score >= 80 else 'C' if score >= 70 else 'D' for score in grades]
print(letter_grades) # 输出 ['B', 'A', 'C', 'A', 'B']
语法
一种条件表达式, 有时其被称作"三元运算符"的, 那它在所有运算里有着最低的优先级。
条件表达式的一般形式如下:
result_if_true if condition else result_if_false
其中:
依据的值, 表达式会返回当中的一个值, 此语法结构极为适用于在仅有一行的代码里依据条件挑选不同的值或者去执行不同的操作。
首先, 表达式x if C else y, 是对条件C求值, 而非对x求值。若C为真, 那么对x求值, 然后返回x所得的值, 若不是, 那么对y求值, 接着返回y所得的值。
请参阅 PEP 308 了解有关条件表达式的详情。
参考
< 表达式列表 的表达式和操作运算 匿名函数 >