Esercizi.
Scrivere una funzione split_list(lst, n) che riceva in input una lista lst e un numero positivo n, e restituisca una nuova lista composta da sottoliste consecutive di lunghezza n. Se la lista originale non è divisibile esattamente per n, gli elementi rimanenti devono essere inseriti in una sottolista più corta alla fine.
Esempio: split_list([1, 2, 3, 4, 5, 6, 7], 3) restituisce [[1, 2, 3], [4, 5, 6], [7]].
Scrivere una funzione find_most_frequent(lst) che trovi l’elemento che occorre più spesso all'interno della lista lst. Se due elementi diversi hanno lo stesso numero di occorrenze, restituire il primo in ordine di apparizione nella lista. Si può assumere che la lista non sia vuota.
Esempio: find_most_frequent([1, 2, 2, 3, 1, 2, 3, 2, 3, 3]) restituisce 2. Il risultato è dovuto al fatto che 2 e 3 occorrono nella lista 4 volte a testa, ma 2 appare precedentemente rispetto a 3.
Scrivere una funzione max_sublist(lst, m) che riceva in input una lista di numeri interi lst e un intero positivo m. La funzione deve trovare la sottolista di lunghezza esattamente 3 con la somma massima, ma con il vincolo che la somma sia minore di m. Se non esiste una sottolista che rispetta i vincoli, la funzione deve restituire una lista vuota.
Esempio: max_sublist([1, 2, 5, 1, 3, 7], 7) restituisce [1, 2, 3], la cui somma è 6. Nota, la sottolista con la somma massima sarebbe [3, 5, 7] ma viene scartata perché la somma è superiore a 6.
Scrivere una funzione can_be_reached(lst, start, end) che riceve una lista di tuple contenenti la città di partenza e di arrivo di un treno, una città di partenza start e una città di arrivo end, e restituisce True se è possibile raggiungere la città end in treno partendo dalla città start.
Esempio: Supponiamo di avere una lista lst = [("cosenza", "roma"), ("roma", "bologna"), ("bologna", "bergamo"), ("bergamo", "pordenone"), ("roma", "milano"), ("milano", "arezzo")]
can_be_reached(lst, "cosenza", "pordenone") restituisce True, perché si può andare da cosenza a roma, da roma a bologna, da bologna a bergamo e poi da bergamo a pordenone.
can_be_reached(lst, "milano", "bergamo") restituisce False, perché non ci sono collegamenti tra le due città.
Clicca qui per vedere le soluzioni!