Python条件表达式优化的10个实例

Python 中的条件表达式(也称为三元运算符)是一种简洁的语法,用于在单个表达式中执行 if-else 逻辑。虽然它们本身并不直接“优化”代码的执行速度,但它们可以使代码更加简洁、易读,并且有助于避免不必要的嵌套或复杂的逻辑。下面我将给出 10 个使用条件表达式来优化代码可读性和简洁性的实例:

1. 赋值优化

不使用条件表达式:

if condition:x = 1
else:x = 2

使用条件表达式:

x = 1 if condition else 2

2. 列表推导中的条件

不使用条件表达式:

result = []
for item in items:if item > 0:result.append(item)

使用条件表达式(虽然这里更常用列表推导):

result = [item for item in items if item > 0]
# 条件表达式在这里不是直接使用的,但展示了类似的简洁性

3. 字典推导中的条件

不使用条件表达式:

result = {}
for key, value in items.items():if value > 0:result[key] = value

使用条件表达式(在字典推导中):

result = {key: value for key, value in items.items() if value > 0}

4. 变量交换(虽然不常用条件表达式)

不使用条件表达式:

temp = x
x = y
y = temp

条件表达式通常不用于变量交换,但这里展示了一种特殊情况(虽然不推荐):

x, y = y, x if condition else x, y
# 注意:这里假设condition几乎总是True,否则这行代码非常不直观

5. 函数返回优化

不使用条件表达式:

def func(x):if x > 0:return "Positive"else:return "Non-Positive"

使用条件表达式:

def func(x):return "Positive" if x > 0 else "Non-Positive"

6. 列表中的条件元素

不使用条件表达式:

result = []
for item in items:if condition(item):result.append(transform(item))else:result.append(item)

使用条件表达式:

result = [transform(item) if condition(item) else item for item in items]

7. 字符串拼接中的条件

不使用条件表达式:

prefix = "Pos " if x > 0 else "Neg "
result = prefix + str(x)

使用条件表达式:

result = ("Pos " if x > 0 else "Neg ") + str(x)

8. 复杂逻辑简化

不使用条件表达式:

if a > b:result = c
elif a < b:result = d
else:result = e

虽然这里不直接适用条件表达式,但展示了一个可能简化的场景(虽然可能需要多个条件表达式或使用其他逻辑)

9. 字典值的选择

不使用条件表达式:

if key in d:value = d[key]
else:value = "Default"

使用条件表达式(Python 3.8+ 字典解析):

value = d[key] if key in d else "Default"
# 或者使用 get 方法,这实际上是更Pythonic的方式
value = d.get(key, "Default")

10. 列表中的条件过滤和转换

结合列表推导和条件表达式:

result = [transform(item) for item in items if condition(item)]

这里,我们结合了列表推导和条件表达式来过滤并转换列表中的元素,同时保持了代码的简洁性。

这些例子展示了如何在不同场景下使用条件表达式来优化代码的可读性和简洁性,尽管它们并不总是提高执行速度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/419489.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展

【科技明说 &#xff5c; 科技热点关注】 2024戴尔科技峰会在8月如期举行&#xff0c;虽然因事未能抵达现场参加&#xff0c;我只是观看了网上在线直播&#xff0c;也未能采访到DTF现场重要与会者&#xff0c;但是通过数十年对戴尔的跟踪与观察&#xff0c;我觉得2024戴尔科技…

基于Java+SpringBoot+Vue+MySQL的美容美发管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于SpringBootVue的美容美发管理系统【附源码文档】、前后…

const、inline、nullptr的使用

目录 1.const引用 1.1权限的放大 1.2权限的缩小 2.inline 3.nullptr 1.const引用 可以引用一个const对象&#xff0c;但是必须用const引用。const引用也可以引用普通对象&#xff0c;因为对象的访问权限在引用过程中可以缩小&#xff0c;但是不能放大。 不需要注意的是类…

uniapp 实现tabbar图标凸起

实现tabbar图标凸起有两种&#xff0c;第一种是自定义tabbar&#xff0c;第二种就是使用官方的tabbar跟api实现&#xff0c;自定义在体验中不如原生的tabbar&#xff0c;所以我下面展示的是使用官方的tabbar跟api实现 效果如图&#xff1a; 左边是未选中中间的凸起&#xff0c…

大模型推理--KV Cache

KV Cache是大模型推理中常用到的一个技巧&#xff0c;可以减少重复计算&#xff0c;加快推理速度。不少人只是从概念上知道它可以减少重复计算&#xff0c;详细的原理则知之甚少&#xff0c;此外为啥只有KV Cache而没有Q Cache呢&#xff0c;我们在本博客中给出详尽的解释。我想…

一些硬件知识(十八)

两个信号PIN之间串接电阻的作用&#xff1a; 1.阻抗匹配 2.吸收反射 3.防止程序异常导致两个IO都是输出的时候短路 尤其针对下图中的信号&#xff1a; 清理穿越机电机中的灰尘&#xff0c;可以用密封胶泥的办法&#xff1a; 一定要小心垫片的掉落&#xff1a; 20块左右的快充充…

游泳馆押金管理+手牌管理+刷手牌 开通方法

一、游泳馆手牌押金管理 1. 减少手牌丢失&#xff1a;收取押金可以让顾客更加谨慎地保管手牌&#xff0c;降低手牌丢失的概率。 2. 保障设施安全&#xff1a;有助于防止顾客对手牌的不当使用或故意破坏&#xff0c;保护游泳馆的设施和资源。 3. 规范顾客行为&#xff1a;促使…

SLM561A​​系列 60V 10mA到50mA线性恒流LED驱动芯片 为智能家居照明注入新活力

SLM561A系列选型参考&#xff1a; SLM561A10ae-7G SOD123 SLM561A15ae-7G SOD123 SLM561A20ae-7G SOD123 SLM561A25ae-7G SOD123 SLM561A30ae-7G SOD123 SLM561A35ae-7G SOD123 SLM561A40ae-7G SOD123 SLM561A45ae-7G SOD123 SLM561A50ae-7G SOD123 …

Pr下载安装教程2024(Adobe Premiere 2024)最新版分享百度网盘链接地址

提示&#xff1a;主要讲述了软件安装及初步使用流程。Pr下载安装教程2024最新版分享百度网盘链接地址首先&#xff0c;解压文件夹后&#xff0c;双击安装包进行安装&#xff0c;选择简体中文并确认安装位置&#xff0c;可按需更改。随后&#xff0c;点击继续等待安装完成并启动…

jmeter依赖jar包找不到类路径

这两天我在纠结这个问题&#xff0c;为啥我maven打包放在jmeter路径下后&#xff0c;jmeter的bean Shell 就是找不到这个类。 纠结很久解开了。我记录下&#xff0c;留给后来的朋友。 Error invoking bsh method: eval Sourced file: inline evaluation of: import org.apache…

python、C++、rust速度比较

TIobe指数依据向主要搜索引擎提交编程语言名称时返回的网页数量来衡量编程语言的流行程度。该指数每月更新一次&#xff0c;并提供了自2002年以来的历史数据。 其官网是https://www.tiobe.com/tiobe-index/ 有意思的事情来了&#xff0c;看下图。 这是编程语言排名的tiobe网站…

两数之和--力扣1

两数之和 题目思路C代码 题目 思路 根据题目要求&#xff0c;元素不能重复且不需要排序&#xff0c;我们这里使用哈希表unordered_map。注意题目说了只对应一种答案。 所以我们在循环中&#xff0c;使用目标值减去当前循环的nums[i]&#xff0c;得到差值&#xff0c;如果我们…

LabVIEW如何确保采集卡稳定运行

在LabVIEW开发中&#xff0c;如何确保硬件采集卡稳定运行&#xff0c;特别是长期采集电压信号&#xff0c;是系统稳定性的重要考虑因素。用户在使用采集卡时&#xff0c;可能需要频繁进行开始、停止和重新采集的操作&#xff0c;这对硬件和软件提出了高要求。下面介绍实现长期稳…

第十五届蓝桥杯图形化省赛题目及解析

第十五届蓝桥杯图形化省赛题目及解析 一. 单选题 1. 运行以下程序&#xff0c;角色会说( )? A、29 B、31 C、33 D、35 正确答案&#xff1a;C 答案解析&#xff1a; 重复执行直到m>n不成立&#xff0c;即重复执行直到m<n。所有当m小于或者 等于n时&…

vsftpd配置用户和密码让其他客户端连接

一、第一个主机:vsftpd下载及配置 前置准备: #卸载防火墙 yum -y remove firewalld #为了不让防火墙有影响&#xff0c;iptables配置也清空 iptables -F vim /etc/selinux/conf SELINUXdisabled #主要是把它改为disabled或者permissive SELINUXTYPEtargeted #重启linux让seli…

C语言深入理解指针4

1.回调函数 回调函数是通过函数指针调用的函数 将函数指针作为参数传递给另一个函数&#xff0c;当这个函数指针被用来调用其所指向的函数时&#xff0c;被调用的函数就是回调函数&#xff0c;回调函数不是应该由该函数的实现方直接调用&#xff0c;而是在特定的事件或条件发生…

MATLAB-基于高斯过程回归GPR的数据回归预测

目录 目录 1 介绍 1. 1 高斯过程的基本概念 1.2 核函数&#xff08;协方差函数&#xff09; 1.3 GPR 的优点 1.4. GPR 的局限 2 运行结果 3 核心代码 1 介绍 高斯过程回归&#xff08;Gaussian Process Regression, GPR&#xff09;是一种强大的非参数贝叶斯方法&…

CAN总线的位同步详细讲解

接收方数据采样 &#xff08;1&#xff09;CAN总线没有时钟线&#xff0c;总线上的所有设备通过约定波特率的方式确定每一个数据位的时长 &#xff08;2&#xff09;发送方以约定的位时长每隔固定时间输出一个数据位 &#xff08;3&#xff09;接收方以约定的位时长每隔固定…

C++入门基础篇

引言 说到编程语言常常听到的就是C语言C Java 。C语言是面向过程的&#xff0c;C是和Java是面向对象的&#xff0c;那么什么是面向对象呢&#xff1f;什么又是面向过程呢&#xff1f;C是什么&#xff1f;封装、继承、多态是什么&#xff1f;且听我絮絮叨叨。 C入门基础 1.命名…

24-9-8-读书笔记(十七)-《契诃夫文集》(三)([俄] 契诃夫 [译] 汝龙 )

文章目录 《契诃夫文集》&#xff08;三&#xff09;&#xff08;[俄] 契诃夫 [译] 汝龙 &#xff09;目录阅读笔记记录总结 《契诃夫文集》&#xff08;三&#xff09;&#xff08;[俄] 契诃夫 [译] 汝龙 &#xff09; 9月&#xff0c;好月份&#xff0c;秋高气爽&#xff0c;…