Python 条件表达式

在一个语法结构里,其中的条件表达式属于颇为简洁的那种, 它是能拿去实现条件判断的, 在单行代码当中能够实现这种条件判断。它有时候还会被叫做 "三元运算符", 或者被叫做 "三元表达式", 原因何在呢, 是由于它是立足于三个操作数进而做出决策的。

示例

以下是一些示例:

复制代码
# 使用条件表达式选择最大值
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 了解有关条件表达式的详情。

参考

< 表达式列表 的表达式和操作运算 匿名函数 >

相关推荐
右耳朵猫AI1 小时前
Python周刊2026W36 | Python 3.15候选版、RISC-V获CPython支持、PEP 843、asyncio修复
python·sqlite·risc-v
liliangcsdn2 小时前
基于信号强度的稀疏选股算法的探索分析
开发语言·python
小白快快跑哦2 小时前
python-字符串全解(四):字符串方法
开发语言·python·字符串
用户298698530142 小时前
Python 实现文本文件与 Word 文档互转的两种方法
后端·python·api
Zane19942 小时前
明明在赋值前读取,为什么还会报 UnboundLocalError?global 与 nonlocal 深挖
后端·python
小毛驴8502 小时前
Jupyter Notebook 安装步骤
ide·python·jupyter
BUG研究员_2 小时前
LangGraph节点缓存-CachePolicy
python·缓存·langraph
quantdash_cc2 小时前
如何设计高效率的批量股票数据获取程序?QuantDash Python SDK 全市场行情拉取实战指南
开发语言·python·数据分析·量化交易·股票数据·quantdash