Sei sulla pagina 1di 6

Eserciziario sulle liste

1. Es.di base: stampe e operazioni di base (es. min, media, mediana)


1- Definire una funzione che legga da tastiera una sequenza di numeri interi finché non
viene inserita dall’utente la stringa “STOP”. Al termine della lettura la funzione
restituisce una lista contenente gli interi letti.
2- Definire una funzione che riceva in input una lista e un oggetto x. La funzione deve
restituire True se l’elemento x è presenta nella lista, False altrimenti.
3- Definire una funzione che riceva in input una lista e un oggetto x. La funzione deve
restituire il primo indice in corrispondenza del quale è presente x all’interno della
lista. La funzione restituisce -1 qualora x non sia presente nella lista.
4- Scrivere una funzione verifica_multipli(lista) che riceva una lista di numeri e
restituisca True se tutti gli elementi sono pari e positivi oppure multipli di 5.
5- Definire una funzione che riceva in input una lista di interi e restituisca il valore
minimo in essa contenuto.
6- Definire una funzione che riceva in input una lista di interi e restituisca il valore
massimo in essa contenuto.
7- Definire una funzione che riceva in input una lista di interi e restituisca la somma
degli elementi in essa contenuti.
8- Definire una funzione che riceva in input una lista di interi e restituisca la media
aritmetica dei valori in essa contenuti.
9- Definire una funzione che riceva in input una lista di interi e restituisca la media
geometrica dei valori in essa contenuti. Si ricordi che:

10-Definire una funzione che riceva in input una lista di interi e restituisca la media
armonica dei valori in essa contenuti. Si ricordi che:

11-Definire una funzione i cui parametri di input siano l ed x. La funzione deve restituire
la frequenza di x all’interno di l, ovvero il numero di volte che x compare in l.
12-Definire una funzione che riceva in input una lista e ne restituisca la moda, ovvero
l’elemento che è presente con maggior frequenza nella lista.
13- Definire una funzione che riceva in input una lista di interi e ne restituisca il valore
mediano. Il valore mediano è l'elemento che occupa la posizione centrale nella
distribuzione ordinata dei valori.

ESEMPIO:

Per la lista L = [ 12 23 20 15 28 27 24] il valore mediano è 23.


14- Definire una funzione che riceva in input una lista di interi l e un intero s. La
funzione deve restituire una nuova lista l1 il cui i-esimo elemento è il risultato del
prodotto fra l’i-esimo elemento di l e s.
Successivamente definire una funzione che esegue la stessa operazione ma modifica
la lista ricevuta in input.
15- Definire una funzione che riceva in input una lista l e restituisca una lista l1 ottenuta
a partire da l rimuovendone tutti gli elementi ripetuti.
Successivamente definire una funzione che esegue la stessa operazione ma modifica
la lista ricevuta in input.

ESEMPIO:
Per la lista L = [ 1 14 2 14 1 5 6 7 1 14 5 8] viene restituita la lista L1 = [ 1 14 2 5 6 7 8 ]

2. Esercizi di elaborazione con più liste


1- Definire una funzione che riceva in input due liste, l1 e l2, di uguale lunghezza e
restituisca una lista l3 il cui i-esimo elemento è dato dalla somma fra l’i-esimo
elemento di l1 e l’i-esimo elemento di l2.
2- Definire una funzione che riceva in input due liste, l1 e l2, di uguale lunghezza e
restituisca una lista l3 il cui i-esimo elemento è dato dalla differenza fra l’i-esimo
elemento di l1 e l’i-esimo elemento di l2.

3- Definire una funzione media_pesata(lista,lista_pesi) che restituisca la media pesata


degli elementi contenuti in lista utilizzando i pesi presenti in lista_pesi.
Lista e lista_pesi sono vettori paralleli. Si ricordi che la formula per il calcolo della
media pesata è la seguente:

4- Definire una funzione che riceva come argomenti tre liste contenenti le ascisse
[ x1;…;xn], le ordinate [y1;…;yn] e le masse di un insieme di punti [m1;…;mn] e
restituisca una lista contenente le coordinate del loro centro di massa [xc, yc] definite
come segue:

5- Definire una funzione prodotto_scalare(v1,v2) che riceve due liste di uguale


lunghezza e restituisca il loro prodotto scalare.
6- Definire una funzione intersezione(u1,u2) che riceve in input due liste e restituisca
una terza lista contenente solo gli elementi presenti sia in u1 che in u2. Nel caso un
elemento comune sia presente più volta in u1 o u2, nella lista risultato dovrà essere
presente un’unica volta.
7- Definire una funzione differenza(u1,u2) che riceve in input due liste e restituisca una
terza lista contenente solo gli elementi presenti in u1 e non presenti in u2.
Successivamente definire una versione della funzione che esegua la stessa operazione
modificando la lista u1 ricevuta in input.
8- Definire una funzione che riceva in input due liste (vettori) di uguale lunghezza e
restituisca la distanza Euclidea fra i due vettori.
9- Definire una funzione che riceva in input una lista di interi e restituisce True se e solo
se la lista ricevuta in input è ordinata in modo crescente.
10-Definire una funzione verifica_sequenza che riceve una lista l e un intero k e
restituisca True se e solo se in l sono presenti k elementi consecutivi la cui somma è
pari a zero.
11-Definire una funzione che riceva in input una lista l e restituisca una lista l2
contenente tutti gli elementi di l che sono strettamente maggiori di tutti i loro
precedenti.

ESEMPIO:
Per la lista L = [18 23 5 8 -8 95 -1] viene restituita la lista L2 = [18 23 95]

12-Data una lista L, indichiamo con x il generico elemento di L e con x s l’elemento in


posizione simmetrica ad x. Si scriva una funzione check_list che riceve una lista L di
interi positivi avente lunghezza pari e restituisce un booleano. In particolare, la
funzione restituisce True se e solo se, per ogni elemento x di L, la somma dei valori
di x e xs è maggiore della somma dei valori degli elementi posizionati tra x e xs.
Si noti che, quando x e xs sono adiacenti, la somma dei valori degli elementi
posizionati tra x e xs può essere assunta pari a zero.

ESEMPIO:
Se L = [12 9 7 2 1 1 3 12] allora la funzione restituisce True, perché:
12 + 12 > 9 + 7 + 2 + 1 + 1 + 3
9+3>7+2+1+1
7+1 >2+1
2+1>0

13-Si scriva una funzione lista_maggiori che riceve una lista L1 di interi e restituisce
una lista L2, della stessa lunghezza di L1, il cui generico elemento L2[i] è pari al
primo elemento maggiore di L1[i] presente in L1. Se nessun elemento è maggiore di
L1[i], allora L2[i] dev’essere posto pari a L1[i].

ESEMPIO:
Se L1 = [6 1 7 3 7 8 9 4], allora lista_maggiori (L1) restituisce la lista L2 = [7 6 8 6 8 9 9 6],
perché il primo elemento in L1 maggiore di 6 è 7, il primo elemento in L1 maggiore di 1 è 6, il primo
elemento in L1 maggiore di 7 è 8 e così via.

14-Data una lista L, indichiamo con x il generico elemento di L, con x s l’elemento in


posizione simmetrica ad x e con xsum la somma dei valori degli elementi precedenti a
x e degli elementi successivi a xs. Si scriva una funzione check_list2 che riceve una
lista L di interi avente lunghezza pari e restituisce un booleano. In particolare, la
funzione restituisce True se e solo se, per ogni elemento x di L, il massimo tra i valori
di x e xs è maggiore di xsum . Si noti che, quando x e xs sono il primo e l’ultimo
elemento della lista, il valore di xsum può essere assunto pari a zero.
ESEMPIO:
Se L = [2 7 1 35 1 17 3 4] allora la funzione restituisce True, perché:
4>0
7>2+4
17 > 2 + 7 + 3 + 4
35 > 2 + 7 + 1 + 17 + 3 + 4

15-Si scriva una funzione azzera_duplicati che riceve una lista L1 di interi positivi e
restituisce una lista L2 della stessa lunghezza di L1 tale che, per ogni elemento L1[i]:
se L1[i] non ha elementi uguali che lo precedono, allora L2[i] sarà uguale a L1[i],
altrimenti L2[i] deve essere pari a zero.

ESEMPIO:
Se L1 = [2 1 5 2 7 5 1 9] allora azzera_duplicati(L1) restituisce la lista L2 = [2 1 5 0 7 0 0 9]

16-Si scriva una funzione verifica_liste che riceve una lista L1 di interi positivi distinti
ed una lista L2 di interi. La funzione restituisce True se e solo se per ogni elemento
x = L1[i], la lista L2 contiene una sottolista di lunghezza almeno x contenente solo
elementi uguali ad x.

Esempio:

Se L1 = [3 1 4] ed L2 = [-3 2 1 5 4 4 4 4 -1 2 3 3 3 3], allora la funzione restituisce True perché


l’elemento L[0] ha valore pari a 3 e la lista L2 contiene una sottolista di lunghezza 4 contenente
solo elementi uguali a 3, l’elemento L[1] ha valore pari ad 1 e la lista L2 contiene una sottolista di
lunghezza 1 contenente solo elementi uguali a 1 e l’elemento L[2] ha valore pari a 4 e la lista L2
contiene una sottolista di lunghezza 4 contenente solo elementi uguali a 4.

17-Si scriva una funzione elabora_lista che riceve una lista L1 di interi, la cui media
indichiamo con m, e restituisce una lista L2 contenente gli elementi di L1 posizionati
in modo tale che gli elementi minori o uguali ad m precedano i valori maggiori di m.
Si noti che sono possibili diversi risultati corretti, purché sia rispettata la suddetta
condizione.

ESEMPIO:

Se L1 = [7 4 7 3 6 8 9 1], allora un possibile risultato di elabora_lista(L1) è la lista L2 = [4 3 1 7 7


6 8 9], perché la media dei valori in L1 è 5,625.

18-Si scriva una funzione verifica che riceve una lista L di interi e un intero k e
restituisce True se e solo se L contiene almeno k elementi consecutivi uguali.

ESEMPIO:
Se L = [1 8 2 1 1 1 2 1] e k = 3 allora verifica(L,k) restituisce True perché L contiene 3 elementi
consecutivi uguali.

19-Si scriva una funzione filtra_lista che riceve una lista L1 di interi non negativi e
restituisce una lista L2 costruita come segue:
la funzione verifica se ogni elemento di L1 avente valore x > 0 è preceduto da
almeno x zeri e seguito da almeno x zeri;
se tale condizione è vera, allora L2 contiene tutti gli elementi maggiori di zero
presenti in L1; altrimenti, L2 è vuota.

ESEMPIO:
Se L1 = [0, 1, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 1, 0, 0] allora la funzione restituisce la lista L2 = [1, 3, 2, 1].

20-Si scriva una funzione verifica_liste che riceve due liste L1 ed L2 di interi e un intero
k e restituisce True se e solo se L1 ed L2 contengono due sottoliste uguali di
lunghezza k.

ESEMPIO:
Se L1 = [1, 2, 3, 7, 3, 5, 3], L2 = [8, 7, 3, 5, 4] e k = 3, allora la funzione restituisce True perché le
liste contengono entrambe la sottolista [7, 3, 5].

21-Si scriva una funzione verifica_liste che riceve due liste L1 ed L2 di interi e un intero
k e restituisce True se e solo se L1 contiene una sottolista di lunghezza k i cui
elementi sono presenti in L2 nello stesso ordine (anche se in posizioni non
consecutive).

ESEMPIO:
Se L1 = [3, 1, 2, 5, 7, 3, 5, 3], L2 = [8, 1, 7, 4, 2, 6, 3, 5, 4] e k = 3, allora la funzione restituisce
True perché la lista L1 contiene la sottolista [1, 2, 5] i cui elementi sono presenti in L2 nello stesso
ordine.

22-Si scriva una funzione verifica_liste che riceve due liste L1 ed L2 di interi e un intero
k e restituisce True se e solo se ogni elemento L1[i] è presente in L2 in i-esima
posizione oppure in una posizione che dista al più k posizioni dall’i-esima.

Esempio:
Se L1 = [3, 1, 8, 5, 4], L2 = [8, 1, 3, 4, 5] e k = 2, allora la funzione restituisce True perché
l’elemento L1[0] è presente in L2 in posizione 2, l’elemento L1[1] è presente in L2 in posizione 1,
l’elemento L1[2] è presente in L2 in posizione 0 e così via.

23-Si scriva una funzione verifica_lista che riceve una lista L di interi e restituisce True
se e solo se ogni elemento di L avente valore n > 0 è immediatamente seguito da
almeno n elementi aventi valore minore o uguale a 0.

ESEMPIO:

Se L = [-3, 1, -2, 2, 0, -1, -3, 3, 0, -1, -3, -1], allora la funzione restituisce True perché l’elemento
L[1] = 1 è seguito da un elemento minore o uguale a 0, l’elemento L[3] = 2 è seguito da 3 elementi
minori o uguali a 0 e l’elemento L[7] = 3 è seguito da 4 elementi minori o uguali a 0.
24-Si scriva una funzione verifica_liste che riceve una lista L1 di interi e una lista L2 di
booleani. La funzione restituisce True se e solo se per tutti gli indici i tali che
L2[i]==True, la lista L1 non contiene elementi di valore uguale a L1[i] in posizione
diversa da i.

ESEMPIO:

Se L1 = [7, 4, 7, 3, 5, 6] ed L2 = [False, True, False, True, True, False], allora la funzione


restituisce True perché:
gli indici tali che L2[i]==True sono 1, 3 e 4;
la lista L1 non contiene elementi di valore uguale a L1[1] (cioè pari a 4) in posizione diversa da 1;
la lista L1 non contiene elementi di valore uguale a L1[3] (cioè pari a 3) in posizione diversa da 3;
la lista L1 non contiene elementi di valore uguale a L1[4] (cioè pari a 5) in posizione diversa da 4.

25- Si scriva una funzione elabora_lista che riceve una lista L1 di interi e restituisce una
lista L2 della stessa lunghezza di L1 così costruita:
se il generico elemento L1[i] è pari, allora l’elemento L2[i] contiene la somma dei tre
elementi di L1 successivi all’i-esimo;
se L1[i] è dispari, allora l’elemento L2[i] contiene la somma dei tre elementi di L1
precedenti all’i-esimo.
Se gli elementi precedenti o successivi all’i-esimo sono meno di tre, si considerino
nella somma solo quelli presenti.

Esempio:

Se L1 = [7, 4, 7, 3, 6, 8], allora la funzione restituisce la lista L2 = [0, 16, 11, 18, 8, 0].

Potrebbero piacerti anche