无法理解此 Python 语法
Can't understand this Python syntax
max_rows = 8
max_cols = 4
matrix = [[1] * max_cols for _ in range(max_rows)]
我不明白这个矩阵是怎么回事,有人能解释一下吗?
这是一种列表理解,一种创建列表的方式。
这相当于:
max_rows = 8
max_cols = 4
matrix = []
for _ in range(max_rows):
matrix.append([1] * max_cols)
但在 execution-time.
时写起来更短更快
_
是一种命名未使用的循环变量的方式。
叫做'list comprehension'
[1] * max_cols
创建 1
、max_cols
次的列表,即 [1, 1, ..., 1] max_cols
次。
[[1] * max_cols for _ in range(max_rows)]
获取创建的列表 [1, 1, ..., 1] 并将其复制 max_rows
次(就像它在 for-loop 中一样)。
注意:出现了一个有趣的问题:为什么不直接 [[1] * max_cols] * max_rows
?
答案是 [...] * n
正在复制 [...]
、n
次的地址,因此,每次更改数组之一(指向 [=18= 的指针) ]) 将出现在所有数组中
max_rows = 8
max_cols = 4
matrix = [[1] * max_cols for _ in range(max_rows)]
我不明白这个矩阵是怎么回事,有人能解释一下吗?
这是一种列表理解,一种创建列表的方式。
这相当于:
max_rows = 8
max_cols = 4
matrix = []
for _ in range(max_rows):
matrix.append([1] * max_cols)
但在 execution-time.
时写起来更短更快_
是一种命名未使用的循环变量的方式。
叫做'list comprehension'
[1] * max_cols
创建 1
、max_cols
次的列表,即 [1, 1, ..., 1] max_cols
次。
[[1] * max_cols for _ in range(max_rows)]
获取创建的列表 [1, 1, ..., 1] 并将其复制 max_rows
次(就像它在 for-loop 中一样)。
注意:出现了一个有趣的问题:为什么不直接 [[1] * max_cols] * max_rows
?
答案是 [...] * n
正在复制 [...]
、n
次的地址,因此,每次更改数组之一(指向 [=18= 的指针) ]) 将出现在所有数组中