遍历 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
返回的第一个值将是索引,第二个值将是实际值本身。
当我尝试对一行中的列进行迭代时,该列在嵌套循环中没有变化:
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
返回的第一个值将是索引,第二个值将是实际值本身。