1122

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/5/1

更新于 2025/5/23