当前位置: 首页 > news >正文

20个非常有用的单行Python代码片段

1. 写在前面

继上篇,继续在本文分享 20 个 Python 单行代码,可以在 30 秒或更短时间内轻松学会。这些单行代码不仅可以提高效率,同时使代码看起来更整洁、更易读。:)

个人博客: https://jianpengzhang.github.io/
CSDN博客: http://blog.csdn.net/u011521019
公众号: 滑翔的纸飞机

2. Python 单行代码

2.1. 单行 for 循环

for 循环是多行语句,但在 Python 中,可以使用列表推导在一行中编写 for 循环。例如,要过滤掉小于 250 的值,请看下面的代码示例。

常规方式:
In [3]: mylist = [200, 300, 400, 500]
In [4]: result = []
In [5]: for x in mylist:...:     if x > 250:...:         result.append(x)...: 
In [6]: print(result)
[300, 400, 500]单行方式:
In [7]: result = [x for x in mylist if x > 250]
In [8]: print(result)
[300, 400, 500]

2.2. 单行 While 循环

在一行中使用 While 循环代码,演示两种不同的方法。

# Method 1 单一声明
In [9]: while True: print(1) # 无限 1# Method 2 多重声明
In [10]: x = 0...: while x < 5: print(x); x= x + 1
0
1
2
3
4

2.3. 单行 if else 语句

单行 if else 将使用三元运算符。三元运算符的语法是"[on true] if [expression] else [on false]"

示例代码中展示 3 个示例,可以清楚地了解如何在单行 if-else 语句中使用三元运算符:

# Example 1: if else In [11]: print("Yes") if 8 > 9 else print("No")
No# Example 2: if elif else: 从右至左进行判断In [15]: E = 2
In [16]: print("High") if E == 5 else print("数据STUDIO") if E == 2 else print("Low")
数据STUDIO# Example 3: only if In [17]: if 3 > 2: print("Exactly")
Exactly

2.4. 单行合并词典

如何使用一行代码将两个字典合并为一个字典。在这里,介绍两种合并词典的方法:

# 单行合并词典
In [18]: d1 = { 'A': 1, 'B': 2 }...: d2 = { 'C': 3, 'D': 4 }# Method1:
In [19]: d1.update(d2)...: print(d1)
{'A': 1, 'B': 2, 'C': 3, 'D': 4}# Method2:
In [20]: d3 = {**d1, **d2}...: print(d3)
{'A': 1, 'B': 2, 'C': 3, 'D': 4}

2.5. 单行函数

第一种方法,使用与三元运算符或单行循环方法相同的函数定义。
第二种方法,使用 lambda 来定义函数。

请看下面的示例代码,以便更清楚地理解:

# 单行函数
# Method1:
In [21]: def fun(x): return True if x % 2 == 0 else False...: print(fun(2))
True# Method2:
In [22]: fun = lambda x : x % 2 == 0
In [23]: print(fun(2))
True
In [24]: print(fun(3))
False

2.6. 单行递归

如何在一行中使用递归。使用单行函数和单行 if-else 语句。下面是一个查找斐波那契数字的示例:

# 单行递归
#Fibonaci 单行递归示例
In [25]: def Fib(x): return 1 if x in {0, 1} else Fib(x-1) + Fib(x-2)
In [26]: print(Fib(5))
8
In [27]: print(Fib(15))
987

2.7. 单行筛选数组

使用 Python 列表推导方法可以在一行代码中完成对数组的筛选。下面是一个过滤偶数列表的示例:

# 单行筛选数组
# 常规方式:
In [29]: result = []...: for x in mylist:...:     if x % 2 == 0:...:         result.append(x)...: print(result)
[2, 8, 12]# 单行方式:
In [30]: result = [x for x in mylist if x % 2 == 0]...: print(result)
[2, 8, 12]

2.8. 单行异常处理

我们使用异常来处理 Python 中的运行时错误。你知道我们可以在一行中编写 Try except 语句吗?通过使用 exec() 语句,我们就可以做到这一点。

# 在一行中处理异常
# 常规方式In [32]: try:...:     print(x)...: except:...:     print("Error")...: 
Error# 单行方式
In [34]: exec('try:print(x) \nexcept:print("Error")')
Error

【注意:】谨慎使用 execeval , 其中 eval() 尽量用ast 模块的 literal()替换。

2.9. 一行中将列表转换为字典

使用 Python enumerate() 函数在一行内将列表转换为字典。将列表传递给 enumerate(),然后使用 dict() 将最终输出转换为字典格式。

# 单行字典In [36]: mydict = ["John", "Peter", "Mathew", "Tom"]...: mydict = dict(enumerate(mydict))...: print(mydict)
{0: 'John', 1: 'Peter', 2: 'Mathew', 3: 'Tom'}

2.10. 单行多变量

Python 允许在一行中进行多个变量赋值。下面的示例代码将向您展示如何做到这一点。

# 在一行中分配多个变量。
# 单行方法In [37]: x = 5...: y = 7...: z = 10...: print(x , y, z)
5 7 10# 单行方式
In [38]: a, b, c = 5, 7, 10...: print(a, b, c)
5 7 10

2.11. 单行数据交换

在一行中交换值。交换值是编程中一项有趣的任务,但它总是需要第三个变量名 temp 来保存交换值。这个单行代码片段将告诉你如何在一行中交换值,而不需要任何临时变量。

常规方式:
In [1]: v1 = 100...: v2 = 200...: temp = v1...: v1 = v2...: v2 = temp...: print(v1, v2)
200 100单行方式:
In [2]: v1, v2 = v2, v1
...: print(v1, v2)
100 200

2.12. 单行排序

排序是编程中常见的问题,Python 有许多内置方法来解决排序问题。下面的代码示例将展示如何用一行代码进行排序。

In [3]: mylist = [32, 22, 11, 4, 6, 8, 12]# 常规方式
In [4]: mylist.sort()...: print(mylist)
[4, 6, 8, 11, 12, 22, 32]# 单行方式
In [5]: print(sorted(mylist))
[4, 6, 8, 11, 12, 22, 32]

2.13. 单行读取文件

不使用语句或普通读取方法,也能正确读取文件的某一行。

# 单行读取文件# 常规方式
In [1]: with open("data.txt", "r") as file:...:     data = file.readline()...:     print(data)...: 
hello world# 单行方式
In [3]: data = [line.strip() for line in open("data.txt","r")]...: print(data)
['hello world', 'Hello Python']

2.14. 单行类

类总是多行工作。但在 Python 中,有一些方法可以在一行代码中使用类的特性。

# 单行类
# 常规方式In [5]: class Emp:...:     def __init__(self, name, age):...:         self.name = name...:         self.age = age...: emp1 = Emp("a44", 22)...: print(emp1.name, emp1.age)
a44 22# 当行方式
# Method 1: 带有动态属性的 Lambda
In [6]: Emp = lambda:None; Emp.name = "a44"; Emp.age = 22...: print(Emp.name, Emp.age)
a44 22# Method 2
In [7]: from collections import namedtuple...: Emp = namedtuple('Emp', ["name", "age"]) ("a44", 22)...: print(Emp.name, Emp.age)
a44 22

2.15. 单行分号

在本代码片段中,展示了如何使用分号在一行中编写多行代码。

In [8]: a = "Python"; b = "Programming"; c = "languages"; print(a, b, c)
Python Programming languages

2.16. 单行打印

这不是一个重要代码片段,但有时在不需要使用循环来执行任务时,它可能会很有用。

常规方式:
In [9]: for x in range(1, 5):...:     print(x)...: 
1
2
3
4单行方式:
In [10]: print(*range(1, 5))
1 2 3 4In [11]: print(*range(1, 6))
1 2 3 4 5

2.17. 单行map函数

map 函数是一个有用的高阶函数,它可以对每个元素应用一个函数。下面举例说明如何在一行代码中使用 map 函数。

# 使用list()函数,来将返回的 map 转换成 list 列表
In [12]: print(list(map(lambda a: a + 2, [5, 6, 7, 8, 9, 10])))
[7, 8, 9, 10, 11, 12]# 示例: 字符串列表 转为大写字母
In [13]: directions = ["north", "east", "south", "west"]...: def to_upper_case(s): return s.upper() # 单行函数...: print(list(map(to_upper_case, directions))) # 单行map处理
['NORTH', 'EAST', 'SOUTH', 'WEST']

【备注】map(function, iterable, ...)

  • function - 针对每一个迭代调用的函数
  • iterable - 支持迭代的一个或者多个对象。在 Python 中大部分内建对象,例如 lists, dictionaries, 和 tuples 都是可迭代的。

在 Python 3 中,map()返回一个与传入可迭代对象大小一样的 map 对象。
在 Python 2中,这个函数返回一个列表 list。

2.18. 删除列表多个元素

使用 del 方法在一行代码中删除 List 中的多个元素,而无需进行任何修改。当然这里还有其他解决方式;

In [19]: mylist = [100, 200, 300, 400, 500]...: del mylist[1::2] # 下表1开始删除,步长2,mylist[1::2] =》[200, 400]...: print(mylist)
[100, 300, 500]

2.19. print 打印重复内容

In [30]: print(':)' * 3)...: print(':)' * 2)...: print(':)' * 1)
:):):)
:):)
:)

2.20. 一行代码就能查找某一范围内的质数

如何编写一行代码来查找某一范围内的质数。

In [31]: print(list(filter(lambda a: all(a % b != 0 for b in range(2, a)),...:                   range(2,20))))
[2, 3, 5, 7, 11, 13, 17, 19]

3. 最后

感谢您花时间阅读文章

关注公众号不迷路:)

相关文章:

20个非常有用的单行Python代码片段

1. 写在前面 继上篇&#xff0c;继续在本文分享 20 个 Python 单行代码&#xff0c;可以在 30 秒或更短时间内轻松学会。这些单行代码不仅可以提高效率&#xff0c;同时使代码看起来更整洁、更易读。&#xff1a;&#xff09; 个人博客&#xff1a; https://jianpengzhang.git…...

【LangChain系列 9】Prompt模版——MessagePromptTemplate

原文地址&#xff1a;【LangChain系列 9】Prompt模版——MessagePromptTemplate 本文速读&#xff1a; MessagePromptTemplate MessagesPlaceholder 在对话模型(chat model) 中&#xff0c; prompt主要是封装在Message中&#xff0c;LangChain提供了一些MessagePromptTemplat…...

ROS2的学习路径

学习ROS2的建议学习路径&#xff1a; 理解基础知识&#xff1a; 熟悉机器人操作系统&#xff08;ROS&#xff09;的概念及其架构。了解ROS2相对于ROS1的优势以及其提供的关键功能。 安装和配置&#xff1a; 在你选择的操作系统上安装ROS2&#xff08;如Ubuntu、Windows、macOS…...

Maintaining leader role through timed lease mechanism

Continuous understanding of distributed systems design On the one hand 基于定时的租约机制来保持leader角色 基于定时的租约机制来保持leader角色的设计思想是一种在分布式系统中确保高可用性和系统一致性的解决方法。 在分布式系统中&#xff0c;通常会有一个角色被选举…...

Mysql InnoDB引擎 的hash索引

Mysql InnoDB引擎不支持hash索引&#xff0c;但是在内存结构中有一个自适应hash索引&#xff0c;来提高查询性能 当设置hash索引时会自动转换成btree索引 查一下mysql官方文档&#xff1a;https://dev.mysql.com/doc/refman/5.7/en/create-index.html innodb_adaptive_hash_i…...

23年PMP考试如何备考?

接下来我要分享的备考建议分为三个部分&#xff0c;考试相关、备考期间注意和刷题建议。 1、PMP考试相关 PMP考试时间一定不能忘记&#xff0c;要密切关注&#xff0c;或许会出现延期的情况。考试教材现在是第七版教材&#xff0c;建议买一本或者用pdf电子版打印出来&#xf…...

mysql数据库增量备份方案、备份计划(InsCode AI 创作助手)

一、备份计划 以下是MySQL数据库增量备份的一般计划&#xff1a; 创建完整备份&#xff1a;在自动备份计划开始前&#xff0c;先创建一次完整备份。这个备份将包含所有数据和表结构。保存增量备份&#xff1a;在每次备份计划完成后&#xff0c;保存增量备份。这个备份将包含从…...

【Flink】FlinkCDC获取mysql数据时间类型差8小时时区解决方案

1、背景: 在我们使用FlinkCDC采集mysql数据的时候,日期类型是我们很常见的类型,但是FlinkCDC读取出来会和数据库的日期时间不一致,情况如下 FlinkCDC获取的数据中create_time字段1694597238000转换为时间戳2023-09-13 17:27:18 而数据库中原始数据如下,并没有到下午5点…...

Javas | DecimalFormat类、BigDecimal类、Random类

目录&#xff1a; 1.DecimalFormat类2.BigDecimal类3.Random类4.需求&#xff1a;编写程序&#xff0c;生成5个不重复的随机数 1.DecimalFormat类 DecimalFormat 是 NumberFormat 的一个具体子类&#xff0c;用于格式十进制数字。 /*** 关于数字的格式化*/ public class Decima…...

机器学习 实战系列 总目录

1、机器学习实战-系列教程1&#xff1a;线性回归入门教程&#xff08;项目实战、原理解读、源码解读&#xff09; 机器学习实战-系列教程1&#xff1a;线性回归入门教程&#xff08;项目实战、原理解读、源码解读&#xff09; 2、机器学习实战-系列教程2&#xff1a;手撕线性回…...

机器学习——贝叶斯(三种分布)/鸢尾花分类分界图/文本分类应用

0、前言&#xff1a; 机器学习中的贝叶斯的理论基础是数学当中的贝叶斯公式。这篇博客强调使用方法&#xff0c;至于理论未作深究。机器学习中三种类型的贝叶斯公式&#xff1a;高斯分布&#xff08;多分类&#xff09;、多项式分布&#xff08;文本分类&#xff09;、伯努利分…...

SOLIDWORKS Composer位置关键帧的使用

SOLIDWORKS Composer是专业的SOLIDWORKS及3D文件处理的动画制作软件&#xff0c;作为SOLIDWORKS 产品线下的一个明星存在。 SOLIDWORKS Composer几乎可以处理任何SOLIDWORKS的模型文件并将之转化成可以动作的机械动画&#xff0c;可以引用在企业的网站、产品说明书以及工作指导…...

PostgreSQL 流复制搭建与维护

文章目录 前言1. 配置环境1.1 环境介绍1.2 主库白名单1.3 主库参数配置 2. 流复制搭建2.1 备份恢复2.2 创建复制用户2.3 参数修改2.4 启动并检查2.5 同步流复制2.6 同步复制级别 3. 流复制监控3.1 角色判断3.2 主库查看流复制3.3 延迟监控3.4 备库查询复制信息 前言 PostgreSQ…...

【Redis】关于过期数据清除的一些策略

这里要讨论的为过期的数据是如何被清除的&#xff0c;也就是网上常常讨论的过期清除策略。 需要注意的是&#xff0c;redis除了会对过期的数据进行淘汰&#xff0c;也可以通过对内存大小进行限制&#xff0c;并对超出内存限制后进行数据淘汰。此时淘汰的数据未必是过期的&…...

动态SQL

Mybatis框架的动态SQL技术是一种根据特定条件动态拼装SQL语句的功能&#xff0c;它存在的意义是为了解决拼接SQL语句字符串时的痛点问题。 1、if if标签可通过test属性的表达式进行判断&#xff0c;若表达式的结果为true&#xff0c;则标签中的内容会执行&#xff1b;反之标签…...

uniapp:OCR识别身份证上传原图失败,问题解决

1、上传普通图片成功 2、上传>4M | >5M图片失败检查&#xff1a;1、uni.uploadFile自身没有文件大小限制。然而&#xff0c;这仍然取决于你的应用程序所在的平台和存储空间容量。 2、上传照片后不在fail&#xff0c;在sucess 提交照片-3 {"data": "<h…...

shell循环和函数

目录 1.for循环2.while循环3.until循环4.函数 1.for循环 for循环是固定循环&#xff0c;也就是在循环时就已经知道需要进行几次的循环&#xff0c;有事也把for循环成为计数循环。for的语法如下两种&#xff1a; 语法一 for 变量 in 值1 值2 值3 …(可以是一个文件等)do程序do…...

京东详情api

简要描述 根据商品id获取详情数据 请求URL http://xxx.xxx.xxx.xxx:xxxx/jd.get.item 请求方式 get 请求Query参数 参数名示例值必选类型说明itemid100016034386是string商品idtokenadmin.api是string权限token 成功返回示例 部分数据展示&#xff1a; {"data&qu…...

MySQL最新版8.1.0安装配置教程

目录 目录 前言 安装流程图 1&#xff0c;MySQL数据库是什么? 2&#xff0c;下载zip压缩包 3&#xff0c;解压到要安装的目录 4,添加环境变量 4.1,找到环境变量 4.2,进行环境变量的添加 5.新建mysql 配置文件 6、安装mysql服务 7、初始化数据文件 8、启动mysql …...

5G试题_1

1、 全息技术属于对5G三大类应用场景网络需求中的哪一种&#xff1f;&#xff08;A&#xff09; A. 增强移动宽带 B. 海量大连接 C. 低时延高可靠 D. 低时延大带宽 2、 在5G时代&#xff0c;不同领域的不同设备大量接入网络&#xff0c;其实引用传统的组网方式和服务提供形式也…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...