Ao lidar com listas 2D, também é possível iterar sobre os objetos usando uma compreensão de lista.
grid = [
[10, 20, 30],
[40, 50, 60],
]
squared = [[i * i for i in row] for row in grid]
print(squared)
# [[100, 400, 900], [1600, 2500, 3600]]
Aqui, o laço externo percorre a grid linha por linha. Em seguida, iteramos sobre cada item em uma linha.
Caso não queiramos obter uma lista 2D como resultado, podemos "achatar" a grade omitindo os colchetes internos e movendo o for i in row para fora do laço interno. Primeiro, iteramos sobre a grade com for row in grid e depois for i in row:
grid = [
[10, 20, 30],
[40, 50, 60],
]
squared = [i * i for row in grid for i in row]
print(squared)
# [100, 400, 900, 1600, 2500, 3600]
Desafio
Você consegue usar compreensão de lista para imprimir todas as coordenadas de um tabuleiro de xadrez?
Os números vão de 1 a 8, e as letras são A B C D E F G H. A numeração segue como A1 B1 C1 ... H1; a próxima linha é A2 B2 C2 ... H2, e assim por diante. Imprima cada linha separadamente.