03. Liste
Creare una lista
Codice sorgente
x = []
i = 0
nome = input("Inserisci un nome (invio per terminare) ")
while len(nome) > 0:
x += [nome]
i += 1
nome = input("Inserisci un nome (invio per terminare) ")
print("\nHai inserito i seguenti", i, "nomi")
j = 0
while j < i:
print(x[j], "di lunghezza", len(x[j]))
j += 1
Esecuzione:
Inserisci un nome (invio per terminare) Anna
Inserisci un nome (invio per terminare) Maria
Inserisci un nome (invio per terminare) Teresa
Inserisci un nome (invio per terminare) Giovanna
Inserisci un nome (invio per terminare) Maria Rosaria
Inserisci un nome (invio per terminare)
Hai inserito i seguenti 5 nomi
Anna di lunghezza 4
Maria di lunghezza 5
Teresa di lunghezza 6
Giovanna di lunghezza 8
Maria Rosaria di lunghezza 13
Note:
In Python una lista è un tipo di dato in grado di gestire sequenze di elementi. Una stringa è una sequenza ordinata di caratteri, similmente una lista è una sequenza ordinata di elementi di qualsiasi tipo
L'istruzione
x = []
associa alla variabile x una lista vuota, cioè una lista con nessun elemento
L'istruzione
x += [nome]
aggiunge un nuovo elemento in coda alla lista. In questo caso nome è una variabile associata ad una stringa, e quindi la lista conterrà delle stringhe
Per accedere ad un singolo elemento della lista si utilizza l'indice, come accade per gli array del linguaggio C. L'istruzione
print(x[j], "di lunghezza", len(x[j]))
stampa x[j], cioè una delle stringhe caricate nella lista, e la lunghezza della stringa stessa.
Nel ciclo
while len(nome) > 0:
x += [nome]
i += 1
l'indice i è utilizzato per contare il numero di inserimenti fatti nella lista. Questa operazione in realtà non è necessaria perché è possibile risalire al numero di elementi presenti nella lista mediante la funzione len(x)
Aggiornare una lista
Codice sorgente
nomi = ["Anna", "Rita", "Giovanna", "Paola", "Adriana", "Alessandra",
"Stefania"]
i = 0
while i < len(nomi):
print(nomi[i], end=" ")
i += 1
print("\nScrivi i nomi che vuoi eliminare dall'elenco (invio per terminare)")
nome_da_eliminare = input()
while (len(nome_da_eliminare) > 0):
nomi.remove(nome_da_eliminare)
nome_da_eliminare = input()
print("Scrivi i nomi che vuoi aggiungere all'elenco (invio per terminare)")
nome_da_inserire = input()
while (len(nome_da_inserire) > 0):
nomi.append(nome_da_inserire)
nome_da_inserire = input()
print("L'elenco dopo i tuoi aggiornamenti è il seguente:")
i = 0
while i < len(nomi):
print(nomi[i], end=" ")
i += 1
print("\nOra elimino il primo elemento della lista...")
n = nomi.pop(0)
print("Ho eliminato", n)
print("Ora il primo elemento della lista è:", nomi[0])
Esecuzione 1:
Anna Rita Giovanna Paola Adriana Alessandra Stefania
Scrivi i nomi che vuoi eliminare dall'elenco (invio per terminare)
Stefania
Rita
Scrivi i nomi che vuoi aggiungere all'elenco (invio per terminare)
Teresa
Antonella
L'elenco dopo i tuoi aggiornamenti è il seguente:
Anna Giovanna Paola Adriana Alessandra Teresa Antonella
Ora elimino il primo elemento della lista...
Ho eliminato Anna
Ora il primo elemento della lista è: Giovanna
Esecuzione 2:
Anna Rita Giovanna Paola Adriana Alessandra Stefania
Scrivi i nomi che vuoi eliminare dall'elenco (invio per terminare)
Tiziana
Traceback (most recent call last):
File "C:/Users/bs/Desktop/workspace/Hello.py", line 11, in <module>
nomi.remove(nome_da_eliminare)
ValueError: list.remove(x): x not in list
Note:
L'istruzione
nomi = ["Anna", "Rita", "Giovanna", "Paola", "Adriana", "Alessandra",
"Stefania"]
associa alla variabile nomi una lista costituita da 7 stringhe
Il ciclo
while i < len(nomi):
print(nomi[i], end=" ")
i += 1
stampa ordinatamente tutti gli elementi della lista. Nella funzione print() il secondo parametro end=" " è una direttiva che specializza il comportamento della funzione print(). In particolare indica che al termine della stampa deve essere lasciato uno spazio bianco (l'azione di default di print(), dopo la stampa, è andare a capo)
L'istruzione
nomi.remove(nome_da_eliminare)
rimuove dalla lista associata alla variabile nomi il primo elemento che corrisponde alla stringa indicata dal parametro nome_da_eliminare. Se tale stringa non esiste l'istruzione genera un errore che blocca il programma se non opportunamente gestito
L'istruzione
nomi.append(nome_da_inserire)
inserisce in coda alla lista associata alla variabile nomi un nuovo elemento.
L'istruzione è equivalente alla seguente:
nomi += [nome_da_inserire]
L'istruzione
n = nomi.pop(0)
assegna alla variabile n il valore dell'elemento della lista posto in posizione 0 e, contestualmente, elimina l'elemento dalla lista. La numerazione degli elementi successivi all'elemento eliminato (in questo caso tutti i restanti elementi) verrà aggiornata di conseguenza.
Controllo dell'input
La procedura fin qui analizzata non controlla l'input e quindi consente la duplicazione dei nomi inseriti nella lista e la cancellazione di un nome inesistente (provocando un errore a run-time).
La procedura seguente tiene conto di questi aspetti.
Codice sorgente
nomi = ["Anna", "Rita", "Giovanna", "Paola", "Adriana", "Alessandra",
"Stefania"]
i = 0
while i < len(nomi):
print(nomi[i], end=" ")
i += 1
print("\nScrivi i nomi che vuoi eliminare dall'elenco (invio per terminare)")
nome_da_eliminare = input()
while (len(nome_da_eliminare) > 0):
if nome_da_eliminare in nomi:
nomi.remove(nome_da_eliminare)
else:
print(nome_da_eliminare, "non è in elenco riprova")
nome_da_eliminare = input()
print("Scrivi i nomi che vuoi aggiungere all'elenco (invio per terminare)")
nome_da_inserire = input()
while (len(nome_da_inserire) > 0):
if nome_da_inserire not in nomi:
nomi.append(nome_da_inserire)
else:
print(nome_da_inserire, "è già in elenco, riprova")
nome_da_inserire = input()
print("L'elenco dopo i tuoi aggiornamenti è il seguente:")
i = 0
while i < len(nomi):
print(nomi[i], end=" ")
i += 1
Note:
L'istruzione
if nome_da_eliminare in nomi:
verifica se nella lista associata alla variabile nomi è presente l'elemento
nome_da_eliminare
Sito: 7ecnologie
Sezione: 09. Python
Capitolo: 02. Introduzione a Python
Paragrafo: 03. Liste
Indice dei capitoli: 00. Risorse - 01. Ambiente di sviluppo - 02. Introduzione a Python - 03. Accesso al DB - 04. La libreria tkinter - 05. Tutorial - 98. Esercizi
Indice dei paragrafi: 01. Primi passi - 02. Funzioni input() e print() - 03. Liste - 04. Tuple - 05. Operatori e conversione di tipi - 06. Dizionari - 07. Insiemi - 08. Il ciclo for - 09. Gestione delle eccezioni - 10. Definizione di funzioni - 11. Parametri delle funzioni
Indice degli approfondimenti: 01. Liste annidate