Sto scrivendo un codice Python in cui aggiungerò i numeri a un elenco, ma non voglio che i numeri nell'elenco vengano ripetuti. Quindi, come faccio a verificare se un numero è già nella lista, prima di fare list.append()
?controlla se esiste già un numero in un elenco in python
risposta
Si potrebbe fare
if item not in mylist:
mylist.append(item)
Ma si dovrebbe davvero utilizzare un set, come questo:
myset = set()
myset.add(item)
EDIT: Se l'ordine è importante, ma l'elenco è molto grande, probabilmente si dovrebbe utilizzare sia un elenco e un set, in questo modo:
mylist = []
myset = set()
for item in ...:
if item not in myset:
mylist.append(item)
myset.add(item)
In questo modo, si ottiene una ricerca rapida dell'esistenza dell'elemento, ma si mantiene l'ordine. Se si utilizza la soluzione ingenua, si otterrà O prestazioni (n) per la ricerca, e che può essere male se l'elenco è grande
O, come @larsman sottolineato, è possibile utilizzare OrderedDict nello stesso senso:
from collections import OrderedDict
mydict = OrderedDict()
for item in ...:
mydict[item] = True
Non esiste un metodo come 'append' per' set'. Sicuramente intendevi "aggiungere". –
Di nuovo, i set sono * orderless *, quindi non è equivalente. –
grazie, corretto –
Se si desidera avere elementi unici nel proprio elenco, allora perché non utilizzare un set, se ovviamente, l'ordine non ha importanza per voi: -
>>> s = set()
>>> s.add(2)
>>> s.add(4)
>>> s.add(5)
>>> s.add(2)
>>> s
39: set([2, 4, 5])
Se l'ordine è una questione di interesse, allora è possibile utilizzare: -
>>> def addUnique(l, num):
... if num not in l:
... l.append(num)
...
... return l
si possono anche trovare un OrderedSet
ricetta, cui si fa riferimento in Python Documentation
Si noti che questo non funzionerà se l'ordine è importante. –
@Lattyware .. Naturalmente. Aggiunto questo punto. –
quindi se voglio che i numeri siano in ordine crescente, devo farlo? potresti spiegare quella parte un po 'di più? (sì, devo avere un set ordinato) – PhoonOne
probabilmente si potrebbe utilizzare un oggetto set, invece. Solo numeri add
sul set. Di per sé non si replicano.
Se si desidera che i numeri siano in ordine crescente, è possibile aggiungerli in un set e quindi ordinare il set in un elenco crescente.
s = set()
if number1 not in s:
s.add(number1)
if number2 not in s:
s.add(number2)
...
s = sorted(s) #Now a list in ascending order
- 1. Controlla se un elenco contiene già un articolo o no?
- 2. come verificare se l'oggetto esiste già in un elenco
- 3. Controlla variabile se è in un elenco
- 4. Controlla se l'oggetto è un elenco di lista in python?
- 5. Django: controlla se un oggetto esiste già prima di aggiungere
- 6. Importare un modulo in Python solo se non esiste già
- 7. controllare se una chiave esiste in un elenco Python
- 8. Controlla se esiste un thread maneggiato
- 9. Express, controlla se esiste un modello
- 10. Controllare se un elemento esiste già in un JComboBox?
- 11. Controlla se qualcosa è un elenco
- 12. Rinomina automaticamente un file se già esiste in modo Windows
- 13. Controlla se la variabile esiste in tmpl_context (Python, Pylons, Genshi)?
- 14. Haskell: Controlla se Int è in un elenco di Int
- 15. Scala controlla se l'elemento è presente in un elenco
- 16. python controlla se una stringa termina con un numero in un intervallo valido
- 17. Come si controlla se un numero è divisibile per un altro numero (Python)?
- 18. Creare un file se non esiste già
- 19. controlla se una stringa si trova in un elenco di stringhe da 2 GB in python
- 20. Verificare se un evento esiste già
- 21. XSLT: Verificare se esiste un valore in un elenco
- 22. Controllare se un tipo definito dall'utente esiste già in PostgreSQL
- 23. Verifica se un utente esiste già in drupal
- 24. Controlla se un file è già bloccato usando flock()?
- 25. Controlla se la directory esiste in lua?
- 26. Esiste già un decoratore on-disk per memoize per python?
- 27. Trova se un numero esiste tra una serie di numeri specificati da un elenco
- 28. controlla se l'immagine esiste php
- 29. Node.js - Mongoose - Controlla se esiste una collezione
- 30. Controlla se un pacchetto è installato
Perché non utilizzare un set? – loganfsmyth