Python 常用单行代码技巧

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

In [1]:
import platform
f"本文运行的 Python 版本:{platform.python_version()}"
Out[1]:
'本文运行的 Python 版本:3.9.19'

三元运算

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

In [2]:
def is_adult(age):
    return "你是成年人" if age >= 18 else "你是未成年人"
In [3]:
is_adult(18)
Out[3]:
'你是成年人'
In [4]:
is_adult(17)
Out[4]:
'你是未成年人'

列表推导式

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

[expression for item in list]
In [5]:
countries = ["united states", "brazil", "united kingdom", "japan"]
In [6]:
[country.title() for country in countries if country.startswith("u")]
Out[6]:
['United States', 'United Kingdom']

字典推导式

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

{key: value for key, value in iterable}
In [7]:
{x: x * x for x in range(10)}
Out[7]:
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}

合并字典

如果我们需要合并字典,有多种方法,可以使用 update() 方法,merge() 运算符,包括上面提到的字典推导式。还一种非常简单的方法,是通过使用解包运算符 **,我们添加 ** 在每个字典前面,组合为一个新的字典来存储输出。

In [8]:
dict1 = {"a": 1, "b": 2}
dict2 = {"c": 3, "d": 4}
In [9]:
{**dict1, **dict2}
Out[9]:
{'a': 1, 'b': 2, 'c': 3, 'd': 4}

删除列表重复元素

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

In [10]:
nums = [1, 1, 1, 2, 2, 3, 4, 5, 6, 7, 7, 8, 9, 9, 9]
In [11]:
list(set(nums))
Out[11]:
[1, 2, 3, 4, 5, 6, 7, 8, 9]

单行多变量赋值

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

In [12]:
a, b, c = 1, "abc", True
In [13]:
print(a, b, c)
1 abc True

列表元素筛选

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

filter(function, iterable)

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

In [14]:
lst = [10, 11, 12, 13, 14, 15]
In [15]:
list(filter(lambda x: x % 2 == 0, lst))
Out[15]:
[10, 12, 14]

字典排序:按照 key

依据 key 对字典进行排序,我们可以借助 sorted 函数,比如

In [16]:
d = {"Z": 9.99, "Y": 9.99, "X": 9.99}
In [17]:
sorted(d.items())
Out[17]:
[('X', 9.99), ('Y', 9.99), ('Z', 9.99)]

字典排序:按照 value

依据 value 对字典进行排序,我们依然可以借助 sorted 函数,比如

In [18]:
d = {"USA": 329.5, "Brazil": 212.6, "UK": 67.2}
In [19]:
sorted(d.items(), key=lambda x: x[1])
Out[19]:
[('UK', 67.2), ('Brazil', 212.6), ('USA', 329.5)]

相关推荐