Corso di recupero - Fondamenti di Informatica I
AA. 2025- 2026
Dott. Michele Vitale
Liste
Parte 2
List comprehension - 1
Modo più pratico e leggibile per generare delle liste.
lista = [x for x in range(2,12)]
lista = []
For x in range(2,12):
lista.append(x)
List comprehension - 2
Scriviamo il codice per creare tutte le possibili combinazioni tra gli elementi delle due liste a e b.
a = [1, 2, 3] b = [4, 5, 6]
Output desiderato: [(1,4),(1,5),(1,6),
(2,4),(2,5),(2,6),
(3,4),(3,5),(3,6)]
List comprehension - 3
Con i classici costrutti …
a = [1,2,3] b = [4,5,6] out = []
for x in a:
for y in b:
out.append( (x,y) )
List comprehension - 4
Con le list comprehension:
out = [(x, y) for x in a for y in b]
Il codice è molto più snello e leggibile!
Esercizio 4
Data una lista di stringhe, stampare una stringa contenente tutte le lettere dell'alfabeto che non sono mai presenti.
Si assuma come alfabeto [a-zA-Z0-9].
Esercizio 5
Data una lista contenente valori numerici positivi e stringhe, trovare il valore massimo per ogni intervallo tra una stringa e l'altra.
[1,2, "ciao", 4, 7, 12, 3 , "secondo ciao","terzo ciao", 3, 14, 2, 7]
—--> [ 2 , "ciao", 12, "secondo ciao", "terzo ciao", 14]
Esercizio 6
Data una lista di indirizzi nel formato <via> ; <numero civico> ; <città>, scrivere una funzione che prenda in input una città, il nome di una via e un intero e che restituisca gli indirizzi filtrati che si trovano nella città data, non nella via specificata e con numero civico superiore a quello in input.
Ricorsione
Ricorsione - 1 - Definizione
Si dice funzione ricorsiva una funzione che può richiamare se stessa per risolvere sottoproblemi simili al problema originale.
Ricorsione - 2 - Casi d’uso
La ricorsione è molto utile nei casi in cui:
Ricorsione - 3 - Struttura di una funzione
function calcolo_ricorsivo(<input>):
if (<input> has property):
return valore_di_base
return calcolo_ricorsivo(< input modificato>)
Caso base: necessario per terminare il flusso di chiamate ricorsive
Passo ricorsivo: riavvia la funzione con input modificato
Ricorsione - 3 - Funzione dello stack
Lo stack è una struttura dati di tipo Last In, First Out o LIFO che gestisce la coda di chiamate a funzione.
Quando si arriva alla fine dell’iterazione al passo base, si risolvono tutte le chiamate a funzione precedenti fino al termine dello stack.
Ricorsione - 4 - Problemi comuni
Ricorsione - 5 - Consigli pratici
Esercizio 05
Scrivere una funzione ricorsiva per il calcolo del fattoriale.
Esercizio 06
Scrivere una funzione ricorsiva che restituisca la somma di una lista.
Esercizio 07
Scrivere una funzione ricorsiva che, data una stringa, restituisca la stessa stringa al contrario.
Esercizio 07 - bonus
Scrivere una funzione ricorsiva che, data una stringa, stampi la stessa stringa al contrario. Non si può usare la keyword return.