分享一些Python 中短小精悍的“骚操作”

liftword3个月前 (03-07)技术文章25

今天分享一些Python 中短小精悍的语法技巧,能让你写出更简洁优雅的代码:

good good study, day day up!


1.列表推导式 + 条件过滤

# 生成偶数的平方
squares = [x**2 for x in range(10) if x % 2 == 0]
# 结果:[0, 4, 16, 36, 64]

2.三元表达式

# 单行条件赋值
result = "Yes" if 5 > 3 else "No"
# 结果:"Yes"

3.交换变量值

a, b = 5, 10
a, b = b, a  # 无需临时变量
print(a, b)  # 10 5

4.合并字典 (Python 3.9+)

dict1 = {"a": 1, "b": 2}
dict2 = {"b": 3, "c": 4}
merged = dict1 | dict2  # {'a':1, 'b':3, 'c':4}

5.快速反转字符串/列表

s = "hello"
print(s[::-1])  # "olleh"

lst = [1, 2, 3]
print(lst[::-1])  # [3, 2, 1]

6.同时获取索引和值 (enumerate)

for index, value in enumerate(["a", "b", "c"]):
    print(index, value)
# 0 a
# 1 b
# 2 c

7.合并两个列表成字典 (zip)

keys = ["a", "b", "c"]
values = [1, 2, 3]
d = dict(zip(keys, values))  # {'a':1, 'b':2, 'c':3}

8.海象运算符 (Python 3.8+)

# 在表达式中赋值
if (n := len("hello")) > 3:
    print(f"长度是{n}")  # 长度是5

9.展开多层嵌套列表

nested = [[1, 2], [3, 4], [5]]
flat = [num for sublist in nested for num in sublist]
# [1, 2, 3, 4, 5]

10.快速去重并保持顺序

lst = [3, 1, 2, 3, 2]
unique = list(dict.fromkeys(lst))  # [3, 1, 2]

11.链式比较

x = 5
print(3 < x < 10)  # True (等价于 3 < x and x < 10)

12.f-string 调试 (Python 3.8+)

value = 42
print(f"{value=}")  # 输出 value=42

13.多变量赋值

a, *b, c = [1, 2, 3, 4, 5]
print(a, b, c)  # 1 [2,3,4] 5

14.生成器表达式省内存

# 不会立即生成所有元素
sum_squares = sum(x**2 for x in range(1000000))

15.用_忽略不需要的值

# 解包时忽略某些值
a, _, c = (1, 2, 3)  # a=1, c=3

16.字典的setdefault

d = {}
for k, v in [("a", 1), ("a", 2)]:
    d.setdefault(k, []).append(v)
# {'a': [1, 2]}

17.上下文管理器打开文件

with open("file.txt") as f:
    content = f.read()
# 自动关闭文件

18.any/all快速判断

nums = [2, 4, 6, 8]
print(all(n%2 ==0 for n in nums))  # True
print(any(n >10 for n in nums))    # False

19.用*解包参数

def sum(a, b, c):
    return a + b + c

values = [1, 2, 3]
print(sum(*values))  # 6

20.itertools模块黑魔法

from itertools import permutations, combinations

# 排列组合
print(list(permutations("ABC", 2)))  # [('A','B'), ('A','C'), ...]
print(list(combinations("ABC", 2)))  # [('A','B'), ('A','C'), ...]

注意:可读性优先,不要为了炫技而过度使用!

相关文章

探索 Python 中合并两个字典的七种方法,找到最适合你的那一款!

在 Python 的世界里,字典作为一种强大的数据结构,扮演着举足轻重的角色。而合并字典,则是我们经常遇到的操作。Python 为我们提供了多种合并字典的方式,每种方式都有其独特的应用场景。探索 Py...

现代化python字典合并的技巧

现代Python字典合并:使用|运算符在Python 3.9之前,有两种常见的合并字典的方法:使用update方法或**运算符。然而,这两种方法都有其缺点。在本文中,我们将探讨Python中合并字典的...

如何在 Python 中创建一个不可变的字典 - Adam Johnson

Python 的内置集合类型具有可变和不可变两种风格:可变版本:list 不可变版本:tuple可变版本:set 不可变版本:frozenset可变版本:dict 不可变版本:MappingProxy...

python 元组转字典

在 Python 中,可以使用内置函数 zip() 将两个序列合并成一个字典。元组可以看作是不可变的序列,因此可以将元组作为输入序列传递给 zip() 函数,以将其转换为字典。假设我们有两个元组,一个...

深入了解Python字典的高级用法-1

Python字典是一种强大的数据结构,不仅仅用于存储和访问数据。本文将介绍一些高级的字典用法,包括字典推导、嵌套字典、默认字典、字典合并等,以帮助您更好地利用Python字典进行编程。1. 字典推导(...

Python基础编程——字典的常用方法(三)

前一节介绍了get()、items()、keys()、pop()四种字典的常用方法,本节继续介绍剩余的四种字典常用的方法:popitem()、setdefault()、update()、values(...