约 1285 字

约 6 分钟

#Python 的推导式(Comprehension)

推导式(Comprehension)是一种快速创建容器便捷语法。

#列表推导式

例如,我们要创建一个长度为 10,元素值为 的列表,可以使用循环进行实现:

numbers:list[int] = []
for x in range(10):
    numbers.append(x**2)
print(numbers)

>>> Establishing WebAssembly Runtime.

>>> Standby.

Powered by Shift.

但是这样略显麻烦,使用推导式可以更简单的实现。列表的推导式为一对方括号([])包裹的 值的循环表达式:

# 列表推导式
numbers:list[int] = [x**2 for x in range(10)]
print(numbers)

>>> Establishing WebAssembly Runtime.

>>> Standby.

Powered by Shift.

  • 表达式 x**2 用于计算元素的值
  • 循环 for x in range(10) 为 x 赋值

并且,推导式可以使用多层循环,例如生成九九乘法表:

# 列表推导式
numbers:list[int] = [x*y for x in range(1, 10) for y in range(1, 10)]
print(numbers)

>>> Establishing WebAssembly Runtime.

>>> Standby.

Powered by Shift.

#集合和字典的推导式

集合和字典也可以使用推导式进行生成。

集合的推导式为一对花括号({})包裹的 值的循环表达式:

# 集合推导式
numbers_set:set[int] = {x**2 for x in range(10)}
print(numbers_set)

>>> Establishing WebAssembly Runtime.

>>> Standby.

Powered by Shift.

字典的推导式为一对花括号({})包裹的 键值对的循环表达式:

# 字典推导式
numbers_dict:dict[int] = {x : x**2 for x in range(10)}
print(numbers_dict)

#元组的推导式

元组不支持推导式,因为圆括号(())的语法被 生成器 使用,但可以通过 tuple 函数将 生成器 转换为元组。

# 尝试元组导式
numbers:tuple[int] = (x**2 for x in range(10))
print(numbers)
print(tuple(numbers))    # 通过 tuple 函数转换为元组

>>> Establishing WebAssembly Runtime.

>>> Standby.

Powered by Shift.

更新: 2025/6/9

作者: PlanC

创建: 2025/5/1