'''Scrivere una funzione modi(la, lb) che prende in input due liste la e lb di interi e di pari lunghezza, modifica le liste confrontando gli interi che nelle due liste occorrono nella stessa posizione e elimina il minore dei due dalla sua lista, se i due interi risultano uguali allora sono cancellati entrambi. La funzione deve restituire il numero di posizioni in cui le due liste hanno lo stesso intero. ad esempio: se la=[1,3,4,5,8] e lb=[2,1,4,2,8] la funzione restituisce 2 e le due liste modificate sono la=[3,5] e lb=[2] se la=[3,2,1,5] e lb=[3,2,2,8] la funzione restituisce 2 e le due liste modificate sono la=[] e lb=[2,8] se la=[1,3,3,5] e lb=[2,2,4,4] la funzione restituisce 0 e le due liste modificate sono la=[3,5] e lb=[2,4] ''' # visto che modificare distruttivamente le liste su cui si cicla è un NO NO # costruiamo le due liste con i valori giusti e poi le sostituiamo alle liste originali # usando la notazione delle slice # Input: due liste di interi # Output: le due liste vengono modificate distruttivamente e si torna un intero # L1 ed L2 sono vuote (liste risultato) # inizializzo un conteggio a 0 # per ogni coppia di elementi x in la e y in lb (usando zip) # se il x è minore di y # aggiungo il y alla seconda lista L2 # se y minore di x # aggiungo il x alla prima lista L1 # altrimenti x==y # non aggiungo nulla a L1 o a L2 # incremento il conteggio # copio L1 in la e L2 in lb # ritorno il conteggio def modi(la,lb): '''Implementare qui la funzione''' L1 = [] # lista di elementi non minimi da mettere in la L2 = [] # lista di elementi non minimi da mettere in lb conteggio = 0 # conteggio delle coppie uguali for x, y in zip(la,lb): if x < y: L2.append(y) elif x > y: L1.append(x) elif x == y: conteggio += 1 la[:] = L1 lb[:] = L2 return conteggio # una lista PUO' essere modificata in un ciclo SOLO SE ci spostiamo dalla fine all'inizio def modi2(la, lb): conteggio = 0 # conteggio delle coppie uguali for i in range(len(la)-1,-1,-1): if la[i] < lb[i]: del la[i] elif la[i] > lb[i]: del lb[i] else: del la[i] del lb[i] conteggio += 1 return conteggio if __name__ == '__main__': la=[1,3,4,5,8] lb=[2,1,4,2,8] ris = modi2(la, lb) print( ris, la, lb) print( 2, [3,5], [2]) la=[3,2,1,5] lb=[3,2,2,8] ris = modi2(la, lb) print( ris, la, lb) print( 2, [], [2,8]) la=[1,3,3,5] lb=[2,2,4,4] ris = modi2(la, lb) print( ris, la, lb) print( 0, [3,5], [2,4])