Python骚操作语法大全
本文由一缘原创整理,内容均为本人日常开发和学习中总结的 Python 实用技巧与骚操作,欢迎交流指正。
Python骚操作语法大全
Python 作为一门优雅且强大的语言,拥有许多令人惊叹的“骚操作”语法。本文将系统梳理一些常见但容易被忽视的 Python 高级用法和技巧,助你写出更高效、更优雅的代码。
1. 一行交换变量
a, b = 1, 2
a, b = b, a
print(a, b)
输出:
2 1
2. 列表推导式/字典推导式/集合推导式
squares = [x**2 for x in range(5)]
even_set = {x for x in range(5) if x % 2 == 0}
reverse_dict = {v: k for k, v in {'a': 1, 'b': 2}.items()}
print(squares)
print(even_set)
print(reverse_dict)
输出:
[0, 1, 4, 9, 16]
{0, 2, 4}
{1: 'a', 2: 'b'}
3. 三元表达式
x = 8
result = "大" if x > 10 else "小"
print(result)
输出:
小
4. 链式比较
x = 5
if 0 < x < 10:
print("x 在 0 和 10 之间")
输出:
x 在 0 和 10 之间
5. 解包与星号操作
a, *rest, b = [1, 2, 3, 4, 5]
print(a, rest, b)
输出:
1 [2, 3, 4] 5
6. 字符串反转/切片骚操作
s = "hello"
reverse = s[::-1]
last3 = s[-3:]
print(reverse)
print(last3)
输出:
olleh
llo
7. zip、enumerate、map、filter 的骚用法
for i, v in enumerate(['a', 'b', 'c']):
print(i, v)
for x, y in zip([1,2,3], ['a','b','c']):
print(x, y)
squared = list(map(lambda x: x**2, range(3)))
evens = list(filter(lambda x: x%2==0, range(5)))
print(squared)
print(evens)
输出:
0 a
1 b
2 c
1 a
2 b
3 c
[0, 1, 4]
[0, 2, 4]
8. 一行读取文件所有行
假设 file.txt 内容如下:
hello
world
代码:
lines = [line.strip() for line in open('file.txt', encoding='utf-8')]
print(lines)
输出:
['hello', 'world']
9. with 上下文管理器骚操作
with open('file.txt', 'r') as f:
data = f.read()
print(data)
输出:
hello
world
10. lambda 表达式与排序骚操作
data = [{'name': 'Tom', 'age': 20}, {'name': 'Jerry', 'age': 18}]
data.sort(key=lambda x: x['age'])
print(data)
输出:
[{'name': 'Jerry', 'age': 18}, {'name': 'Tom', 'age': 20}]
11. 字典的 get/setdefault 用法
d = {'a': 1}
value = d.get('b', 0)
d.setdefault('c', 2)
print(value)
print(d)
输出:
0
{'a': 1, 'c': 2}
12. Counter 计数骚操作
from collections import Counter
cnt = Counter('abracadabra')
print(cnt.most_common(2))
输出:
[('a', 5), ('b', 2)]
13. 一行合并多个字典
d1 = {'a': 1}
d2 = {'b': 2}
d3 = {**d1, **d2}
print(d3)
输出:
{'a': 1, 'b': 2}
14. 生成器表达式与惰性计算
gen = (x**2 for x in range(3))
print(next(gen))
print(next(gen))
输出:
0
1
15. 断言与类型注解
def add(a: int, b: int) -> int:
assert isinstance(a, int) and isinstance(b, int)
return a + b
print(add(1, 2))
输出:
3
16. 单行 if/else 多条件赋值
cond1 = False
cond2 = True
x = 1 if cond1 else 2 if cond2 else 3
print(x)
输出:
2
17. 多变量解包赋值
a, b, c = 1, 2, 3
print(a, b, c)
输出:
1 2 3
18. 反转字典
d = {'a': 1, 'b': 2}
inv = {v: k for k, v in d.items()}
print(inv)
输出:
{1: 'a', 2: 'b'}
19. 变量交换骚操作
x, y, z = 1, 2, 3
x, y, z = z, x, y
print(x, y, z)
输出:
3 1 2
20. 斐波那契骚操作(生成器)
def fib(n):
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b
print(list(fib(10)))
输出:
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]