La lista nidificata in Python
Nel linguaggio Python posso costruire anche liste nidificate. Cos'è una lista nidificata? Si tratta di una lista situata all'interno di un'altra lista. E' anche detta lista annidata.
Un esempio pratico
[ 1, 2, 3, ["a", "b", "c"] ]
La ricerca in una lista nidificata
La ricerca in una lista nidificata è limitata soltanto agli elementi del primo livello, non è una ricerca in profondità.
Esempio
In questa lista è presente una lista nidificata.
lista1=[ 1, 2, 3, ["a", "b", "c"] ]
Se cercassi l'elemento "a" con l'istruzione index
lista1.index("a")
il comando non lo troverebbe perché il valore "a" si trova in una lista nidificata ( lista di 2° livello ).
Viceversa, se digitassi.
lista1.index(3)
La ricerca dell'elemento 3 avrebbe esito positivo
2
Il numero 3 è si trova nella lista di 1° livello. E' il terzo elemento ( posizione 2 ).
Come creare una matrice con le liste nidificate
La lista nidificata è molto utile per creare le matrici nel linguaggio Python.
Esempio pratico
Utilizzo la list comprehension del linguaggio per creare una matrice identità.
n=5
matrice=[[(1 if x == y else 0)
for x in range(n)] for y in range(n)]
Il comando crea una matrice identità, ossia una matrice composta da una diagonale con il valore uno e tutti gli altri elementi uguali a zero.
[ [1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]
Gli elementi della lista di 1° livello identificano le righe della matrice.
Gli elementi della lista di 2° livello ( lista nidificata ) identificano le colonne della matrice.
Se stampassi a video la lista, il risultato finale sarebbe il seguente:
[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1] ]
Ossia una matrice identità
[1, 0, 0, 0, 0]
[0, 1, 0, 0, 0]
[0, 0, 1, 0, 0]
[0, 0, 0, 1, 0]
[0, 0, 0, 0, 1]
In questo modo ho creato la matrice identità con Python.