Python系列教程
详解Python二维列表推导式
2025-10-26 6 0
简介 这段代码 arr = [[a * b for a in range(y)] for b in range(x)] 是一个嵌套的列表推导式,用于创建一个x行y列的二维列表,其中每个元素的值等于其行索引乘以列索引。
详解Python二维列表推导式:构造x*y乘法表
这段代码 arr = [[a * b for a in range(y)] for b in range(x)] 是一个嵌套的列表推导式,用于创建一个x行y列的二维列表,其中每个元素的值等于其行索引乘以列索引。
代码逐层解析
外层循环:for b in range(x)
b 代表行索引,取值范围:0 到 x-1
外层循环创建x个行(一维数组)
内层循环:for a in range(y)
a 代表列索引,取值范围:0 到 y-1
内层循环在每个行中创建y个元素
计算表达式:a * b
每个元素的值 = 行索引 × 列索引
实际运行示例
假设输入:x=3, y=4
代码执行过程:
python
# 当 b=0 (第0行):
[a*b for a in range(4)] → [0*0, 0*1, 0*2, 0*3] → [0, 0, 0, 0]
# 当 b=1 (第1行):
[a*b for a in range(4)] → [1*0, 1*1, 1*2, 1*3] → [0, 1, 2, 3]
# 当 b=2 (第2行):
[a*b for a in range(4)] → [2*0, 2*1, 2*2, 2*3] → [0, 2, 4, 6]
最终结果:
python
arr = [
[0, 0, 0, 0], # 第0行
[0, 1, 2, 3], # 第1行
[0, 2, 4, 6] # 第2行
]
等价的传统写法
为了更好理解,看看等价的传统循环写法:
python
arr = []
for b in range(x): # 外层循环:处理每一行
row = [] # 创建新的一行
for a in range(y): # 内层循环:处理行中的每个元素
row.append(a * b) # 计算元素值并添加到行中
arr.append(row) # 将完整的行添加到二维列表中
可视化理解
text
x=3, y=4 的二维列表结构:
列索引(a)
0 1 2 3
行 ------------
索 0 | 0 0 0 0
引 1 | 0 1 2 3
(b) 2 | 0 2 4 6
每个元素 = 行索引 × 列索引
应用场景
这种二维列表推导式常用于:
创建乘法表
初始化二维数组
矩阵运算
游戏棋盘初始化

