专业编程基础技术教程

网站首页 > 基础教程 正文

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

ccvgpt 2025-04-05 17:12:01 基础教程 15 ℃

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

good good study, day day up!

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


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'), ...]

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

最近发表
标签列表