Stavo cercando di scrivere una funzione per rimuovere i duplicati da un elenco in Python.Perché il set è ordinato quando si converte una lista da impostare?
Ma dopo averlo fatto, ho trovato la lista ordinata convertendola in set e in un elenco.
Ecco lo script:
>>> l = [9,10,10,11,1,1,1,22,2,2,2]
>>> s = set(l)
>>> s
set([1, 2, 9, 10, 11, 22])
>>> l2 = list(s)
>>> l2
[1, 2, 9, 10, 11, 22]
>>> l2 = list(set(l))
>>> l2
[1, 2, 9, 10, 11, 22]
>>>
Il set s
è ordinato (almeno ordinato la stampa di esso).
Perché il set è ordinato?
E qual è la complessità temporale se rimuovere i duplicati eseguendo questo:
def remove_duplicates(nums):
return list(set(nums))
Brevemente: oggetti 'set' sono arbitrariamente ordinate. – TigerhawkT3
@ TigerhawkT3 Per favore non essere così aggressivo in chiusura. C'è di più nella questione che solo un ordinamento arbitrario. –
'set_l = [x per (i, x) in enumerate (l) if l.index (x) == i]' –