Ho appena letto un'altra domanda degli utenti mentre cercavo un modo per calcolare le differenze in due elenchi.Perché utilizzare un set per il confronto di elenchi?
Python, compute list difference
mia domanda è perché vorrei fare
def diff(a,b):
b = set(b)
return [aa for aa in a if aa not in b]
piuttosto che fare
def diff(a,b):
tmp = []
for i in a:
if(i not in b):
tmp.append(i)
return tmp
Edit: appena notato la seconda funzione diff effettivamente restituito le somiglianze. Dovrebbe essere corretto ora.
Una buona spiegazione del motivo per cui quest'ultimo è O (n^2). Inoltre, ecco alcuni tempi di timeit che ho fatto sull'approccio list comprehension vs for loop (le list comprehensions sono circa due volte più veloci nel mio esempio): https://gist.github.com/2647005 –
wow ... che è un po ' prove sconvolgenti. Sto implementando il primo di sicuro. – Jake