遍历 Python 中的列表列表中的列

Iterate Across Columns in a List of Lists in Python

当我尝试对一行中的列进行迭代时,该列在嵌套循环中没有变化:

i_rows = 4
i_cols = 3
matrix = [[0 for c in xrange(i_cols)] for r in xrange(i_rows)]

for row, r in enumerate(matrix):
    for col, c in enumerate(r):
        r[c] = 1

print matrix

观察输出

[[1, 0, 0], [1, 0, 0], [1, 0, 0], [1, 0, 0]]

预期输出

[[1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1]]

我尝试了不同的表达式,例如 xrange()len(),我正在考虑切换到 numpy。我有点惊讶 Python 中的二维数组并不像我对该语言的第一印象那么直观。

目标是一个具有不同整数值的二维数组,稍后我需要对其进行解析以在屏幕上表示二维图形。

如何遍历列表列表中的列?

您只需根据 col 分配值,而不是 c

for row, r in enumerate(matrix):
    for col, c in enumerate(r):
        r[col] = 1               # Note `col`, not `c`

因为 enumerate 返回的第一个值将是索引,第二个值将是实际值本身。