Funzioni 6 - esercizi con insiemi
Scarica zip esercizi
Esercizio - sillabe
Scrivi una funzione sillabe che data una stringa parola costituita solo da bisillabe e un insieme trovate passato alla funzione, trova tutte le bisillabe distinte e le mette nell’insieme trovate.
NOTA: la funzione
sillabeNON ritorna nulla !
Esempio 1:
>>> trovate = set()
>>> sillabe("banana", trovate)
>>> trovate
{'na', 'ba'}
Esempio 2:
>>> trovate = set()
>>> sillabe("ricaricare", trovate)
>>> trovate
{'ri', 'ca', 're'}
[1]:
# scrivi qui
Esercizio - distingui
✪✪ Scrivi una funzione distingui che data una lista listona contenente sottoliste di due caratteri ciascuna, RITORNA una NUOVA LISTA contenente tutte le sottoliste distinte (ignorando quindi le sottoliste duplicate)
la lista ritornata deve avere gli elementi nello stesso ordine in cui li si è trovati in
listonaper sapere velocemente se una sottolista è già stata incontrata o meno, usare un insieme
NON effettuare ricerche in liste (quindi niente
count,index,inin liste - sono lenti) !NON effettuare rimozioni da liste (quindi niente
removeda liste - è lenta) !SUGGERIMENTO: le liste sono mutabili, possiamo metterle in un insieme? Se non è possibile, come possiamo fare?
Esempio:
>>> listona = [ ['d','d'],['a','b'],['d','d'],['c','a'],['c','a'],['d','d'],['a','b'] ]
>>> distingui( listona)
[['d', 'd'], ['a', 'b'], ['c', 'a']]
#NOTA: la variabile listona NON deve essere modificata:
>>> listona
[ ['d','d'],['a','b'],['d','d'],['c','a'],['c','a'],['d','d'],['a','b'] ]
[2]:
# scrivi qui
Esercizio - intersectron

Dati una lista insiemi contenente un numero arbitrario di insiemi, RITORNA un NUOVO insieme che contiene gli elementi comuni a tutti gli insiemi.
Per risolvere l’esercizio, si può intersecare un insieme alla volta con un ciclo for (lento) oppure la tecnica descritta qui (breve ed efficace).
prova a risolvere in entrambi i modi
ATTENTO alla lista vuota !
il tuo codice deve funzionare con un qualsiasi numeri di insiemi (l’immagine è solo un esempio)
[3]:
def inter_for(insiemi):
raise Exception('TODO IMPLEMENT ME !')
# INIZIO TEST - NON TOCCARE !
assert inter_for([]) == set()
assert inter_for([set(),set()]) == set()
assert inter_for([set(),set(),set()]) == set()
assert inter_for([{'a'},{'a'},{'a'}]) == {'a'}
assert inter_for([{'a','b'},{'b'},{'b'}]) == {'b'}
assert inter_for([{'a'},{'a','b'},{'a'}]) == {'a'}
assert inter_for([{'c'},{'c'},{'c','b'}]) == {'c'}
assert inter_for([{'a','b'},{'a','b'},{'a','b'}]) == {'a','b'}
assert inter_for([{'a','b','c'},{'a','b','c','d'},{'b','c','d'}, {'b','c'}]) == {'b','c'}
# verifica che non abbiamo modificato gli insiemi di input
s = {'a','b'}
assert inter_for([s,{'b','c'}]) == {'b'}
assert s == {'a','b'}
# FINE TEST
[4]:
def inter_fast(insiemi):
raise Exception('TODO IMPLEMENT ME !')
# INIZIO TEST - NON TOCCARE !
assert inter_fast([]) == set()
assert inter_fast([set(),set()]) == set()
assert inter_fast([set(),set(),set()]) == set()
assert inter_fast([{'a'},{'a'},{'a'}]) == {'a'}
assert inter_fast([{'a','b'},{'b'},{'b'}]) == {'b'}
assert inter_fast([{'a'},{'a','b'},{'a'}]) == {'a'}
assert inter_fast([{'c'},{'c'},{'c','b'}]) == {'c'}
assert inter_fast([{'a','b'},{'a','b'},{'a','b'}]) == {'a','b'}
assert inter_fast([{'a','b','c'},{'a','b','c','d'},{'b','c','d'}, {'b','c'}]) == {'b','c'}
# verifica che non abbiamo modificato gli insiemi di input
s = {'a','b'}
assert inter_fast([s,{'b','c'}]) == {'b'}
assert s == {'a','b'}
# FINE TEST
Prosegui
Continua con esercizi su funzioni e dizionari