CodeGym /Corsi /Python SELF IT /Generazione di liste

Generazione di liste

Python SELF IT
Livello 7 , Lezione 7
Disponibile

7.1 Moltiplicazione

In Python c'è una sintassi comoda che permette di aumentare il numero di elementi. Per questo si utilizza un semplice operatore di moltiplicazione.

Generazione di stringhe

Può essere applicato alle stringhe:


print("Mamma" * 5)  # stamperà MammaMammaMammaMammaMamma
        

Oppure si può, per esempio, stampare velocemente una stringa-separatore:


print("-" * 40)  # stamperà ----------------------------------------
        

Generazione di liste

Puoi anche moltiplicare il numero di elementi in una lista:


print(["apple"] * 5)  # stamperà ['apple', 'apple', 'apple', 'apple', 'apple']
        

Questo operatore ha anche un'applicazione più pratica. Ad esempio, vuoi creare una lista di 10 elementi, riempita di zeri:


alist = [0] * 10
print(alist)  # stamperà [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 
        

Si può anche creare un array bidimensionale. Ad esempio, vuoi creare un array 20x10, riempito di zeri. È altrettanto semplice:


alist = [[0] * 10] * 20 
print(alist)  # stamperà [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ...]
        

Molto comodo, non è vero?

7.2 List Comprehension

In Python c'è uno strumento utile chiamato "List Comprehension" — è un modo comodo e compatto per creare liste. Questo strumento sintattico permette di generare nuove liste applicando un'espressione a ogni elemento di un oggetto iterabile in una sola riga di codice.

È più facile mostrarlo che descriverlo. Questo strumento sintattico appare così:


[espressione for variabile in sequenza]

Dove:

  • variabile — identificatore di una variabile,
  • sequenza — sequenza di valori che la variabile assume (può essere una lista, una stringa o un oggetto ottenuto tramite la funzione range),
  • espressione — un'espressione, di solito dipendente dalla variabile usata nel generatore, con cui verranno riempiti gli elementi della lista.

Importante! Tutta l'espressione deve essere racchiusa tra parentesi quadrate.

Ecco alcuni esempi di utilizzo dei generatori:

Creare una lista composta da n zeri, puoi farlo anche con un generatore:


alist = [0 for i in range(100)]
        

Creare una lista riempita dai quadrati dei numeri interi, puoi farlo così:


n = 5
alist = [i ** 2 for i in range(n)]            
        

Creare una lista riempita da numeri interi da 1 a n:


n = 10
alist = [i + 1 for i in range(n)]
        

Ecco come ottenere una lista riempita da numeri casuali da 1 a 9 (utilizzando la funzione randrange() dal modulo random):


from random import randrange

n = 10
alist = [randrange(1, 10) for i in range(n)]
        

7.3 Ciclo in List Comprehension

La List Comprehension può essere usata non solo per generare liste. In sostanza, è solo un modo compatto per scrivere un ciclo for.

Ad esempio, con essa puoi semplicemente stampare alcuni valori da una lista sullo schermo:


alist = ["apple", "banana", "cherry"]
[print(x) for x in alist]
        

Oppure puoi inserire anche valori dalla tastiera:


a = [input() for i in range(int(input()))]
        

In questo esempio la lista sarà composta da stringhe lette dall'input standard: prima devi inserire il numero di elementi della lista (questo valore verrà utilizzato come argomento della funzione range), poi — il numero specificato di stringhe.

Nella forma a cui sei abituato, questo codice appare così:


n = int(input())
a = []
for i in range(n):
    x = input()  
    a.append(x)
        

In generale, ci sono molte possibilità con la List Comprehension:

Puoi usare condizioni:

L'inclusione di condizioni nell'espressione consente di filtrare gli elementi, ad esempio, puoi creare una lista solo di numeri pari:


[x for x in range(10) if x % 2 == 0]
        

Cicli annidati:

Il generatore consente di utilizzare cicli annidati, ad esempio, per creare array multidimensionali:


[(x, y) for x in range(3) for y in range(3)]
        
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION