本文由一缘原创整理,内容均为本人日常开发和学习中总结的 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]