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. 最后

感谢您花时间阅读文章

关注公众号不迷路:)

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

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

相关文章

MFC|选择获取文件路径

参考&#xff1a;mfc按钮选择文件或者文件夹&#xff08;https://blog.csdn.net/qq_39433050/article/details/130261518&#xff09; 点击按钮槽函数&#xff0c;选择文件 void CMFCStartGrabDlg::OnBnClickedSelectfile() {// TODO: Add your control notification handler…

JetBrains设置inline hint的背景色、前景色

如题。修改IDE的hint前景色和背景色。 修改后结果&#xff1a;

Spring Boot + Vue的网上商城之物流系统实现

Spring Boot Vue的网上商城之物流系统实现 思路 当构建一个物流系统时&#xff0c;我们可以按照以下步骤进行&#xff1a; 设计数据模型&#xff1a;首先确定系统中需要存储的数据&#xff0c;例如物流公司信息、物流订单信息等。根据需求设计相应的数据模型&#xff0c;包括…

2023/9/14 -- C++/QT

作业&#xff1a; 仿照Vector实现MyVector&#xff0c;最主要实现二倍扩容 #include <iostream>using namespace std;template <typename T> class MyVector { private:T *data;size_t size;size_t V_capacity; public://无参构造MyVector():data(nullptr),size(…

数据可视化大屏模板 | 保姆级使用教程

近来很多朋友私信咨询怎么下载使用数据可视化大屏模板&#xff0c;在这里就给大家做一个相对简单的教程总结。有需要的朋友记得先收藏保存&#xff0c;以便不时之需。 数据可视化大屏制作软件&#xff1a;奥威BI系统 数据可视化报表模板板块&#xff1a;模板秀 主要操作&…

Redis常用应用场景

Redis是一款开源的基于内存的键值存储系统&#xff0c;它提供了多种数据结构和丰富的功能&#xff0c;适用于各种不同的应用场景。以下是Redis常用的应用场景&#xff1a; 1.缓存&#xff1a;Redis最常见的用途就是作为缓存。由于Redis存储在内存中&#xff0c;读取速度非常快…

opencv 轮廓顶点重新排序----四边形

def reorder(myPoints):# print(myPoints.shape)# 创建一个与myPoints具有相同形状和类型的数组myPointsNew np.zeros_like(myPoints)# 数组重塑为一个4行2列的数组myPoints myPoints.reshape((4,2))# 计算myPoints数组中每一行&#xff08;即每个点&#xff09;的坐标和add …

使用navicat for mongodb连接mongodb

使用navicat for mongodb连接mongodb 安装navicat for mongodb连接mongodb 安装navicat for mongodb 上文mongodb7.0安装全过程详解我们说过&#xff0c;在安装的时候并没有勾选install mongodb compass 我们使用navicat去进行可视化的数据库管理 navicat for mongodb下载地址…

Python —— 捕获异常

1、Python中常见的异常 & 捕获异常 1、常见异常 1、NameError: name a is not defined 2、IndexError: list index out of range 3、KeyError: nam 4、ValueError: invalid literal for int() with base 10: b 5、ZeroDivisionError: div…

Windows10环境下安装VMware虚拟机来安装 CentOs7

软硬件准备 软件&#xff1a;VMware(16 pro)&#xff1a;阿里云盘分享. 硬件&#xff1a;因为是在宿主机上运行虚拟化软件VMware安装centos&#xff0c;所以对宿主机的配置有一定的要求。最起码i5CPU双核、硬盘500G、内存4G以上。 镜像&#xff1a;CentOS7 ,下载地址 http://is…

Python工程师Java之路(p)Module和Package

文章目录 1、Python的Module和Package2、Java的Module和Package2.1、Module2.1.1、分模块开发意义2.1.2、模块的调用 2.2、Package Module通常译作模块&#xff0c;Package通常译作包 1、Python的Module和Package Python模块&#xff08;Module&#xff09;&#xff1a;1个以.…

算法|Day49 动态规划17

LeetCode 647- 回文子串 题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题目描述&#xff1a;给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子…

免费音乐下载网站分享(MP3文件格式)

免费音乐下载网站分享&#xff08;MP3文件格式&#xff09; 最近需要下载一些歌曲&#xff0c;发现很多音乐app上下载文件都需要vip&#xff0c;再上网查询了一番&#xff0c;最后发现了一个宝藏网站&#xff0c;可以免费下载各种格式的MP3文件&#xff0c;在这里给大家分享一…

Python+Appium自动化测试-编写自动化脚本

之前已经讲述怎样手动使用appium-desktop启动测试机上的app&#xff0c;但我们实际跑自动化脚本的过程中&#xff0c;是需要用脚本调用appium启动app的&#xff0c;接下来就尝试写Python脚本启动app并登陆app。环境为Windows10 Python3.7 appium1.18.0 Android手机 今日头条…

Android USB电源管理

The USB peripheral detects the lack of 3 consecutive SOF packets as a suspend request from the USB host. 1 驱动shutdown顺序 系统关机或重启的过程中&#xff0c;会调用设备驱动的shutdown函数来完成设备的关闭操作&#xff0c;有需要的设备可以在驱动中定义该函数。其…

pyqt与opencv-qt冲突解决办法

问题&#xff1a;pyqt显示不出界面 问题分析&#xff1a; 根据报错可以看出程序找到了libxcb.so&#xff0c;但是由于某些原因并不能够调用该驱动&#xff0c;这是因为pyqt5与opencv里的qt差生了冲突&#xff0c;这说明opencv内部的插件与pyqt5所使用的插件不兼容&#xff0c;因…

面试问题总结(2)

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言&#xff0c;数据结构&#xff0c;Linux基础&#xff0c;ARM开发板&#xff0c;网络编程等领域UP&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff0…

类和对象(2)

文章目录 1.类的6个默认成员函数&#xff08;天选之子&#xff09;2.构造函数3.析构函数3.1特性 4.拷贝构造 1.类的6个默认成员函数&#xff08;天选之子&#xff09; C语言中&#xff0c;可能中途return也可能最后return&#xff0c;destroy的地方很多&#xff0c;比较麻烦。…

数据在内存中的存储

目录 数据类型 大小端 判断大小端 练习 1 2 浮点数在内存中储存 存M 存E 取E 数据类型 整形家族&#xff1a; char unsigned char signed char short unsigned short [int] signed short [int] int unsigned int signed int long unsigned long [int] signed…

vue中预览docx

docx的数据流从服务器的接口获取。 1. 安装插件 yarn add docx-preview 2. 在页面引入 import { renderAsync } from "docx-preview" 3.讲解析内容写入div <div id"bodyContainer"></div> 4. 实现代码 api(option).then((res)>{ …