杀手:恶魔出没的世界免安装绿色中文版
1.12G · 2025-10-25
这种“一行搞定”的风格统称为 Comprehensions(推导式) ,是 Python 最具特色的语法之一。 我们从列表推导式说起~
# 传统方式
squares = []
for i in range(1, 6):
squares.append(i ** 2)
print(squares) # 输出: [1, 4, 9, 16, 25]
# 列表推导式
squares = [i ** 2 for i in range(1, 6)]
print(squares) # 输出: [1, 4, 9, 16, 25]
列表推导式是一种用更简洁、更 Pythonic 的方式创建列表的语法。(其实就是把传统方式换个写法)
对于上面所用到的列表推导式:
# 列表推导式
squares = [i ** 2 for i in range(1, 6)]
print(squares) # 输出: [1, 4, 9, 16, 25]
i ** 2:这是“表达式”,表示我们最终要放进列表里的东西(每个元素的值)。for i in range(1, 6):这是循环部分,i 是临时变量,遍历 range(1, 6) 中的每个值。[] 包起来,表示结果是一个列表。if和else# 过滤条件:不要奇数
even_squares = [i ** 2 for i in range(1, 6) if i % 2 == 0]
print(even_squares) # 输出: [4, 16]
# 规则:偶数平方,奇数变成负数
results = [i ** 2 if i % 2 == 0 else -i for i in range(1, 6)]
print(results) # 输出: [-1, 4, -3, 16, -5]
列表推导式的基本结构本来长这样:
[表达式 for 临时变量 in 可迭代对象 if 条件]
if 放在最后,用来过滤元素。if 条件的 i,才会被计算 表达式 并加入列表。但是,如果要对每个元素做不同处理(比如偶数平方,奇数变负数),就不能把 if 放在最后了。
结构变成:
[表达式1 if 条件 else 表达式2 for 临时变量 in 可迭代对象]
colors = ['红', '蓝']
sizes = ['S', 'M']
# 传统写法:
pairs = []
for c in colors:
for s in sizes:
pairs.append((c, s))
# 列表推导式写法:
pairs = [(c, s) for c in colors for s in sizes]
print(pairs)
# 输出: [('红', 'S'), ('红', 'M'), ('蓝', 'S'), ('蓝', 'M')]
列表推导式会一次性生成整个列表,如果数据很大,可能占用很多内存。这时可以考虑用生成器表达式(用圆括号 () 而不是 [])
gen = (i**2 for i in range(1, 6))
print(gen) # <generator object ...>
# 用 for 循环取值:
for x in gen:
print(x) # 1, 4, 9, 16, 25
1.12G · 2025-10-25
140M · 2025-10-25
21.8G · 2025-10-25
2025-10-25
2025/26 冬春航季即将启动,国航 C919 新增广州、西安、长沙等新航点
部分 Win11 23H2,Windows Server 2016/2022 安装微软 10 月累积更新失败,严重至“变砖”