掌握这9个单行代码技巧!你也能写出『高端』Python代码 ⛵

article/2025/11/9 5:35:49

💡 作者:韩信子@ShowMeAI
📘 Python3◉技能提升系列:https://www.showmeai.tech/tutorials/56
📘 本文地址:https://www.showmeai.tech/article-detail/303
📢 声明:版权所有,转载请联系平台与作者并注明出处
📢 收藏ShowMeAI查看更多精彩内容

Python 是一个简单易上手可读性强且功能强大的编程语言,它有一些独特的技巧和写法,可以在不影响可读性的情况下大大缩短我们的 Python 代码,让它看起来更加紧凑和高级。

在本篇内容中ShowMeAI 给大家总结最常用的『单行代码(one-liner )』技巧,让你的代码加分更加『高级』!

推荐入门的小伙伴阅读ShowMeAI的 图解Python编程:从入门到精通系列教程 系列教程,学习全套 Python 知识!

以下所有的代码都可以在 在线 Python 编译器 中运行,快试起来!

💡 1.单行 if - else 语句

if-else 语句是我们在 Python 中学习的基础逻辑判断语法之一。 我们通常会以分支的形式来书写这个语句,但 Python 其实能支持 if 和 else 语句在同一行,简单快捷完成判断。

如下为代码示例:

age = 18valid = "你是成年人"
invalid = "你是未成年人"
# 单行代码
print(valid) if age >= 18 else print(invalid)

💡 2.列表推导式

列表推导式是 Python 独有且非常强大的语法,它提供了一种简短的语法来根据现有列表的值创建列表。 相比函数和循环更紧凑,甚至还可以加入条件判断。

列表推导式的基本语法如下:

[expression for item in list]

以下是一个代码应用示例:

countries = ['united states', 'brazil', 'united kingdom', 'japan']
# 带条件判断的列表推导式
capitalized = [country.title() for country in countries if country.startswith('u')]print(capitalized)
['United States', 'United Kingdom']

列表推导式非常简洁,但是大家注意,不要把过于复杂的功能嵌套于列表推导式中,我们还是要注意保持代码的可读性哦!

💡 3.字典推导式

与列表推导式类似,Python 中也有字典推导式,字典推导式提供了一种简短的语法,在一行代码中创建字典。 语法如下:

{key: value for key, value in iterable}

下面是一个简单的代码示例:

dict_numbers = {x:x*x for x in range(1,6) }print(dict_numbers)
{1: 1, 2: 4, 3: 9, 4: 16, 5:25}

💡 4.合并词典

我们如果需要合并字典,有多种方法,可以使用 update()方法, merge()运算符,包括上面提到的字典推导式。

一种非常简单的方法,是通过使用解包运算符 **,我们添加 **在每个字典前面,组合为一个新的字典来存储输出。如下示例:

dict_1 = {'a': 1, 'b': 2}
dict_2 = {'c': 3, 'd': 4}
# 合并字典
merged_dict = {**dict_1, **dict_2}print(merged_dict)
{'a': 1, 'b': 2, 'c': 3, 'd': 4}

💡 5.删除列表重复元素

一个非常高频的处理是对列表元素虑重。这时一个最快捷的方式是利用 Python 中的集合set,集合是元素的无序集合。 我们只需要将列表转为集合再转回为列表即可。

示例如下:

numbers = [1,1,1,2,2,3,4,5,6,7,7,8,9,9,9]print(list(set(numbers)))
[1, 2, 3, 4, 5, 6, 7, 8, 9]

💡 6.单行多变量赋值

如果我们需要为多个变量赋值,我们可以一行中完成这个过程,如下示例:

# 单行赋值多变量
a, b, c = 1, "abc",  Trueprint(a, b, c)
1 'abc' True

💡 7.列表元素筛选

另外一个非常常见的场景是,对列表元素进行筛选过滤,保留其中满足某些条件的元素结果为新的列表。这个功能的实现方法也很多,一个简单的方法是使用 filter()函数。

基本语法如下:

filter(function, iterable)

我们甚至可以借助lambda匿名函数来定义过滤条件,配合filter,可以在一行中快速完成列表元素筛选的功能。比如下例我们筛选出列表中的所有偶数:

my_list = [10, 11, 12, 13, 14, 15]
# 选出所有偶数
print(list(filter(lambda x: x%2 == 0, my_list )))
[10, 12, 14]

💡 8.字典排序:按照 key

对于复杂一点点的结构,比如 Python 中的字典,如果我们要依据key进行排序,没办法直接sort,但是我们可以借助sorted函数完成这个任务,比如下例中我们根据商品的名称排序:

product_prices = {'Z': 9.99, 'Y': 9.99, 'X': 9.99}print({key:product_prices[key] for key in sorted(product_prices.keys())})
{'X': 9.99, 'Y': 9.99, 'Z': 9.99}

💡 9.字典排序:按照 value

有时候我们会需要对字典基于value排序,这个任务同样可以基于sorted()函数完成,我们先看看所有sorted()函数的参数,如下。

sorted(iterable, key=None, reverse=False)

要对字典按照value进行排序,我们需要使用 key 参数,这个参数接受一个函数,函数的返回值作为排序的依据。 这里配合lambda函数可以很方便地完成任务。

假设我们有一个包含人口值的字典,我们想按值对其进行排序。

population = {'USA':329.5, 'Brazil': 212.6, 'UK': 67.2}print(sorted(population.items(), key=lambda x:x[1]))
[('UK', 67.2), ('Brazil', 212.6), ('USA', 329.5)]

我们发现返回的结果是一个列表,我们可以利用前面提到的字典推导式,对其进行简单处理,如下:

population = {'USA':329.5, 'Brazil': 212.6, 'UK': 67.2}print({k:v for k, v in sorted(population.items(), key=lambda x:x[1])})
{'UK': 67.2, 'Brazil': 212.6, 'USA': 329.5}

参考资料

  • 📘 在线 Python 编译器:http://blog.showmeai.tech/python3-compiler/
  • 📘 图解Python编程:从入门到精通系列教程:https://www.showmeai.tech/tutorials/56


http://chatgpt.dhexx.cn/article/PqQJO7Mm.shtml

相关文章

Qt QLineEdit单行输入框用法详解

Qt QLineEdit单行输入框用法详解 QLineEdit 是 Qt 提供的一个控件类,它直接继承自 QWdiget 类,专门用来创建单行输入框,如下图所示: 图 1 单行文本输入框 实际开发中,我们经常用到 QLineEdit 输入框,比如…

idea修改单行注释颜色

1.idea修改注释颜色 idea修改单行注释颜色:settings->Editor->Color Scheme->Java->Block comment->右边Foreground

html中单行文本,利用css实现单行文本文字两端对齐

日常使用中我们可以用 text-align: justify; 实现文本两端对齐效果。 但是该属性有一个问题,不支持单行文本的两端对齐,只有达到2行或者以上才会有效。 所以需要采用下面两种方法实现单行文本两端对齐效果: 利用伪类 :after 实现:…

python创建单行文本框_PyQt5每天必学之单行文本框

本文实例为大家分享了PyQt5单行文本框展示的具体代码,供大家参考,具体内容如下 QLineEdit 是一个允许输入和编辑纯文本的单行控件。系统中的撤销、重做、复制、剪切和粘贴都可用于该控件。 #!/usr/bin/python3 # -*- coding: utf-8 -*- ""&quo…

单行文本省略失效

单行文本省略失效 要省略的盒子内没有其他块及元素 <div class"f"><div class"left">11111</div><div class"right"><span>222222222222222222222222222222222222222222222222</span></div></div…

python中单行注释_Python中的单行、多行、中文注释方法

Python中的单行、多行、中文注释方法 一、python单行注释符号(#) python中单行注释采用 #开头 示例:#this is a comment 二、批量、多行注释符号 多行注释是用三引号” ”包含的,例如: 三、python中文注释方法 今天写脚本的时候,运行报错: SyntaxError: Non-ASCII …

python创建单行文本框_HTML单行文本框

网站的登录或注册页面&#xff0c;用户名一栏使用的一般为单行文本框。例如 C语言中文网的登录(http://vip.biancheng.net/login.php)或注册(http://vip.biancheng.net/register.php)页面用户名栏的文本框&#xff0c;使用的就是单行文本框。 在 HTML 中&#xff0c;把 标签的 …

CSS中的单行、多行文本溢出总结

文章目录 写在前面一.用到的相关属性1.white-space2.word-break3.text-overflow:4.overflow 二.单行文本溢出三.多行文本溢出 写在前面 这里是小飞侠Pan&#x1f973;&#xff0c;立志成为一名优秀的前端程序媛&#xff01;&#xff01;&#xff01; 本篇博客收录于我的githu…

平面方程、两平面夹角、点到平面距离

平面方程 首先介绍一下法向量 法向量&#xff1a;垂直于平面的非零向量 由此可知法向量垂直于相应平面上的任意向量 平面法向量的求法&#xff1a; 变换方程为一般式AxByCzD0,平面的法向量为(A,B,C)。 例如&#xff1a;若一个平面是2x3y5z-10&#xff0c;那么该平面的法向量就…

点到超平面的距离

点到超平面的距离 1.点到平面的距离2.点到超平面的距离 1.点到平面的距离 首先说一下采用向量法计算点到平面的距离&#xff1a; 设图中平面的方程为AxByCzD0,点M0的坐标为&#xff08;x0,y0,z0&#xff09;,点M1的坐标为&#xff08;x1,y1,z1&#xff09;,求M1到平面的距离。…

python 求平面两点距离_Python求平面内点到直线距离的实现

近期遇到个问题&#xff0c;需要计算平面内点到直线的距离&#xff0c;发现数学知识都还给老师了&#xff0c;度娘后找到计算方法&#xff0c;特此记录。 点到直线的计算公式&#xff1a; 通过公式推导&#xff0c;得到信息&#xff1a; A&#xff1a;直线斜率 B&#xff1a…

平面方程与点到平面的距离

1. 平面的点法式方程 过空间的一点&#xff0c;与已知直线垂直的平面只有一个。因此&#xff0c;给定平面上的一点和垂直于该平面的一个非零向量&#xff0c;平面就确定了。 这就是所谓的点法式方程的基础。 (1)法向量&#xff1a; 任意垂直与一个平面的向量被称为法向量。 …

求点到平面的距离(C#)

1.空间中平面方程的一般形式为&#xff1a; AxByCzD0 (参数,A,B,C,D是描述平面空间特征的常数) 已知空间中3个点的坐标(x1,y1,z1),(x2,y2,z2),(x3,y3,z3)&#xff0c;求解平面方程。 解法1.根据已知的3个点&#xff0c;建立3个联合方程组&#xff0c;进行消元&#xff1b; 2…

平面方程、夹角与点到平面的距离

平面的点法式方程 法向量&#xff1a;垂直于一个平面的非零向量叫做一个平面的法向量。 假设空间内有一点 M0(x0,y0,z0) M 0 ( x 0 , y 0 , z 0 ) 和一个向量 n→(A,B,C) n → ( A , B , C ) &#xff0c;则经过点 M0 M 0 且垂直于向量 n→ n → 的平面有且只有一个&#xf…

点到平面的距离公式推导

转自&#xff1a;http://www.cnblogs.com/graphics/archive/2010/07/10/1774809.html 准备知识 平面的一般式方程 Ax By Cz D 0 其中n (A, B, C)是平面的法向量&#xff0c;D是将平面平移到坐标原点所需距离&#xff08;所以D0时&#xff0c;平面过原点&#xff09; 向量的模…

kvm学习------虚拟机迁移

虚拟机迁移 虚拟机迁移分为动态迁移和静态迁移 静态迁移&#xff1a;是指在虚拟机关闭或暂停的情况下&#xff0c;将源宿主机上虚拟机的磁盘文件和配置文件拷贝到目标宿主机上。这种方式需要显式的停止虚拟机运行&#xff0c;对服务可用性要求高的需求不合适。 动态迁移&#…

ESXi下虚拟机迁移至PVE

ESXi版本&#xff1a;6.5.0 PVE版本&#xff1a;7.1.2 情景描述&#xff1a;因工作原因&#xff0c;要求将ESXi上的虚拟机全部迁移至开源免费的PVE。至于ESXi和PVE的对比就不提了&#xff0c;网上百度能够搜到很多&#xff1b;写这篇文章也只是记录一下自己在迁移过程中遇到的…

Centos7 虚拟机迁移及扩容

1. 虚拟机的迁移 https://blog.csdn.net/qq_37035946/article/details/103702802 2. 对迁移后的虚拟机进行扩容 关闭Vmware的centos7系统&#xff0c;才能在VMWare菜单中设置需要增加到的磁盘大小,如下图所示: 然后启动虚拟机,但这个实际硬盘的大小还是之前的大小,我们需要对…

VMware 虚拟机迁移

迁移虚拟机分为&#xff1a; 主机之间迁移 存储间迁移 以上都迁移 迁移是指将虚拟机从一个主机或存储位置移至另一个主机或存储位置的过程。复制虚拟机是指创建新的虚拟机&#xff0c;并不是迁移形式。 在 vCenter Server 中&am…

nova虚拟机迁移一

虚拟机迁移 虚拟机迁移也就是把一台虚拟机从原计算节点迁移到一个新的计算节点&#xff0c;并且能够保证虚拟机在新的计算节点可以正常工作&#xff0c; 虚拟机的迁移根据虚拟机的运行状态可以分为两种1、动态迁移&#xff1b;2、静态迁移 虚拟机动态迁移 虚拟机的动态迁移…