Cómo atravesar una lista 2D en python

Tengo la siguiente lista:

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]] 

y uso Fowling for loop para atravesar cada elemento de la lista de cuadrículas ->

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

Pero, no muestra la última fila de la lista, es decir [5,6,7,4,7]

Entonces, ¿cuál es la guerra adecuada en Python para Travers en la lista 2D?

La forma correcta de recorrer una lista 2-D es

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

El bucle for en Python seleccionará cada elemento en cada iteración. Por lo tanto, a partir de la lista 2D de la grid , en cada iteración, se seleccionan las listas 1-D. Y en el bucle interno, se seleccionan elementos individuales en las listas 1-D.

Si está utilizando Python 3.x, use la print como una función, no como una statement, como esta

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

Salida

 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 

Pero, en el caso, si desea cambiar el elemento en un índice particular, entonces puede hacer

 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. 

Por qué no:

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

Intenta seguir …

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

Intenta seguir en su lugar. Puede hacer la operación necesaria en lugar de “imprimir cuadrícula [i] [j]”

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