当我尝试跨行中的列进行迭代时,该列在嵌套循环中不会发生变化:
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图形。
如何迭代列表列表中的列?
答案 0 :(得分:1)
您只需根据col
分配值,而不是c
for row, r in enumerate(matrix):
for col, c in enumerate(r):
r[col] = 1 # Note `col`, not `c`
因为enumerate
返回的第一个值将是索引,第二个值将是实际值本身。