Quando si lavora con liste 2D, è anche possibile iterare sugli oggetti con una list comprehension.
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]]
Qui il ciclo esterno percorre la grid riga per riga. Poi iteriamo su ogni elemento nella riga.
Nel caso in cui non vogliamo ottenere una lista 2D come risultato, possiamo appiattire la grid omettendo le parentesi interne e spostando for i in row fuori dal ciclo interno. Prima iteriamo sulla grid con for row in grid e poi 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]
Sfida
Riesci a utilizzare una list comprehension per stampare tutte le coordinate di una scacchiera?
I numeri vanno da 1 a 8, e le lettere sono A B C D E F G H. La numerazione procede come A1 B1 C1 ... H1, la linea successiva è A2 B2 C2 ... H2, ecc. Stampa ogni linea separatamente.