Creare liste in Python è molto facile. Si può usare [0] * 50 per creare una lista di 50 elementi riempita con zeri. Un altro modo che offre un controllo più dettagliato sugli elementi è iterare con un ciclo for e aggiungere gli elementi uno per uno. Tuttavia, c'è un'altra maniera per creare una lista attraverso le comprensioni di lista. Se volessimo creare una lista dei quadrati dei numeri da 1 a 100, potremmo farlo con:
squares = []
for n in range(1, 100):
squares.append(n * n)
print(squares)
squares = [n * n for n in range(1, 100)]
print(squares)
Entrambi questi programmi stamperanno lo stesso output e creeranno la stessa lista di quadrati - [1, 4, 9, 16, 25, 36, 49, 64, 81, ..., 9216, 9409, 9604, 9801].
Quindi, la sintassi per le comprensioni di lista è:
La comprensione si inserisce tra parentesi quadre []
Il ciclo for itera sui valori
Gli elementi della lista vengono prima della parola chiave for e possono dipendere dalla variabile del ciclo for.
Nel caso di invio di inviti di compleanno, immagina di aver creato una lista di nomi che vorremmo invitare, ma per errore li abbiamo scritti tutti in minuscolo. Ora possiamo usare una comprensione di lista per sistemare la situazione:
invites = [
'anna',
'alice',
'bob',
'simon',
'thomas'
]
fixed = []
for name in invites:
fixed.append(name.title())
print(fixed)
invites = [
'anna',
'alice',
'bob',
'simon',
'thomas'
]
fixed = [name.title() for name in invites]
print(fixed)
Entrambi questi programmi stamperanno ['Anna', 'Alice', 'Bob', 'Simon', 'Thomas'].
Sfida
Dato n nomi e cognomi, ti viene chiesto di estrarre i nomi e stampare sia la lista iniziale sia la lista con solo i nomi.
La prima riga dell'input contiene un singolo intero n. Le successive n righe contengono coppie nome cognome.
Il programma dovrebbe stampare prima la lista iniziale e poi la lista con solo i nomi.
Input
Output
3
Marshall Mathers
Peter Hernandez
Curtis Jackson
Marshall Mathers
Peter Hernandez
Curtis Jackson
Marshall
Peter
Curtis
Consiglio
Puoi usare .split()[0] per ottenere il primo elemento dopo aver diviso la stringa per spazi bianchi.
Puoi anche stampare con una comprensione di lista:
l = ['hi', 'my', 'name', 'is']
[print(item) for item in l]