迭代Python中列表中的列

时间:2016-03-29 10:05:41

标签: python list python-2.7 enumerate

当我尝试跨行中的列进行迭代时,该列在嵌套循环中不会发生变化:

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中的二维数组并不像我对该语言的第一印象那么直观。

目标是具有不同整数值的二维数组,我稍后需要解析它以在屏幕上表示2D图形。

如何迭代列表列表中的列?

1 个答案:

答案 0 :(得分:1)

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

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

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