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 了解有关条件表达式的详情。

参考

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

相关推荐
天天被压力8 分钟前
【A股分钟级高频数据完全手册 #09】A股历史分时交易数据接口:普通分时怎么批量下
java·人工智能·python
天天被压力16 分钟前
【A股分钟级高频数据完全手册 #10】股票实时行情数据接口Python:公开源实时交易取数
java·人工智能·python
特立独行的猫A10 小时前
我给女儿写了个打字练习:一边敲键盘,一边把小学英语单词记牢
java·后端·python
cpolar技术支持10 小时前
「我这边连不上你那个服务」—— 用清单驱动的 TCP 连通性只读看板,cpolar 让远端同事自己取证
python·内网穿透·tcp·cpolar·网络诊断
云和数据.ChenGuang11 小时前
LangGraph 异步 Node 的设计与写法实践
开发语言·人工智能·python·机器学习·php
天诰12 小时前
SA-K-11 检索会消失吗与四个未解问题
java·服务器·人工智能·python·机器学习·ai编程
benchmark_cc13 小时前
用 QuantDash 读取美股行情:AAPL.US 的运行前检查、排错顺序与数据校验清单
python·数据分析·pandas·量化交易·股票数据·quantdash
羲云网络16 小时前
GPT Image 2.6 接入指南:Flare、Sunburst 怎么选,编辑失败如何排查
人工智能·python·aigc·图像生成·acedatacloud
橙橙笔记19 小时前
具身智能的学习 - 完成一个机械臂 第1节
python·学习·机械臂·具身智能
小小张说故事19 小时前
Python 的 class 语句到底执行了什么?拆开 __prepare__、metaclass.__new__ 和那个被讲反的 __set_name__ 顺序
python