如何遍历python中的2D List

时间:2014-05-22 06:11:23

标签: python list python-2.7

我有以下列表:

grid = [[2, 6, 8, 6, 9], [2, 5, 5, 5, 0], [1, 3, 8, 8, 7], [3, 2, 0, 6, 9], [2, 1, 4,5,8], [5, 6, 7, 4, 7]]

我使用fowling for循环来遍历网格列表的每个元素 - >

for i in xrange(len(grid[i])):
    for j in xrange(len(grid[j])):
        print grid[i][j]
    print "\n"

但是,它没有显示最后一行列表,即[5,6,7,4,7]

那么,这对于2D列表中的Travers来说是正确的战争?

5 个答案:

答案 0 :(得分:11)

遍历二维列表的正确方法是

for row in grid:
    for item in row:
        print item,
    print

Python中的for循环将在每次迭代中选择每个项目。因此,从grid 2-D列表中,在每次迭代时,都会选择1-D列表。在内循环中,选择1-D列表中的各个元素。

如果您使用的是Python 3.x,请使用print作为函数,而不是像这样的语句

for row in grid:
    for item in row:
        print(item, end = " ")
    print()

<强>输出

2 6 8 6 9
2 5 5 5 0
1 3 8 8 7
3 2 0 6 9
2 1 4 5 8
5 6 7 4 7

但是,如果您想要更改特定索引处的元素,则可以执行

for row_index, row in enumerate(grid):
    for col_index, item in enumerate(row):
        gird[row_index][col_index] = 1     # Whatever needs to be assigned.

答案 1 :(得分:0)

为什么不:

for i in grid:
    for j in i:
        print("{}".format(j))
    print("\n")

答案 2 :(得分:0)

试试以下......

for i in grid:
    for j in i:
        print j
    print '----'

答案 3 :(得分:0)

请尝试以下操作。您可以执行必要的操作,而不是“print grid [i] [j]”

for i in range(len(grid)):
    for j in range(len(grid[i])):
        print grid[i][j]
    print '---'

答案 4 :(得分:0)

为什么不使用while循环遍历2D列表

grid = [[2, 6, 8, 6, 9], [2, 5, 5, 5, 0], [1, 3, 8, 8, 7], [3, 2, 0, 6, 9], [2, 1, 4,5,8], [5, 6, 7, 4, 7]]
i = 0
while i < len(grid):
    j = 0
    while j < len(grid[0]):
        print (grid[i][j], end=' ')
        j += 1
    print() #new line
    i += 1