Piszę kod Pythona, gdzie będę dołączanie liczb do listy, ale nie chcę numery z listy do powtórzenia. Jak więc sprawdzić, czy numer jest już na liście, zanim wykonam list.append()
?Sprawdź, czy numer już istnieje na liście w pytonie
Odpowiedz
Można zrobić
if item not in mylist:
mylist.append(item)
Ale trzeba naprawdę użyć zestawu, na przykład:
myset = set()
myset.add(item)
EDIT: Jeśli kolejność jest ważna, ale lista jest bardzo duża, należy prawdopodobnie użyj zarówno listy i zestaw, jak:
mylist = []
myset = set()
for item in ...:
if item not in myset:
mylist.append(item)
myset.add(item)
W ten sposób uzyskujesz szybkie wyszukiwanie istnienia elementu, ale zachowujesz kolejność. Jeśli użyjesz naiwnego rozwiązania, uzyskasz O (n) wydajność wyszukiwania, a to może być złe, jeśli twoja lista jest duża.
Lub, jak podkreślił @larsman, możesz użyć OrderedDict do tego samego efektu:
from collections import OrderedDict
mydict = OrderedDict()
for item in ...:
mydict[item] = True
Nie ma takiej metody jak 'append' dla' set'. Na pewno masz na myśli 'add'. –
Znów, zestawy są * uporządkowane *, więc nie jest to równoważne. –
dzięki, poprawione –
Jeśli chcesz mieć unikalne elementy na liście, to dlaczego nie użyć zestawu, jeśli oczywiście kolejność nie ma znaczenia dla Ciebie: -
>>> s = set()
>>> s.add(2)
>>> s.add(4)
>>> s.add(5)
>>> s.add(2)
>>> s
39: set([2, 4, 5])
Jeśli zamówienie jest przedmiotem troski, a następnie można użyć: -
>>> def addUnique(l, num):
... if num not in l:
... l.append(num)
...
... return l
można również znaleźć OrderedSet
receptury, które są przekazywane w Python Documentation
Pamiętaj, że to nie zadziała, jeśli zamówienie jest ważne. –
@ Legatware .. Oczywiście. Dodano ten punkt. –
, więc jeśli chcę, aby numery były w kolejności rosnącej, muszę to zrobić? czy możesz wyjaśnić tę część nieco więcej? (tak, muszę mieć uporządkowany zestaw) – PhoonOne
można chyba użyć zestawu obiekt zamiast. Tylko numery add
do zestawu. Z natury nie replikują.
Jeśli chcesz, aby twoje liczby były w porządku rosnącym, możesz dodać je do zestawu, a następnie posortować zestaw na listę rosnącą.
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. Sprawdź, czy wartość już istnieje na liście słowników?
- 2. Sprawdź, czy klucz istnieje na liście Pythona
- 3. Sprawdź, czy zdarzenie już istnieje
- 4. XSLT: Sprawdź, czy wartość istnieje w liście
- 5. Sprawdź, czy sieć ScanResult jest już skonfigurowana (istnieje na liście getConfiguredNetworks()).
- 6. Sprawdź, czy elementem w pozycji [x] istnieje na liście
- 7. BigQuery - Sprawdź, czy tabela już istnieje
- 8. SharePoint: Sprawdź, czy element istnieje na liście, minimalny narzut
- 9. Sprawdź konkretny element na liście w Drools
- 10. Sprawdź, czy typ zdefiniowany przez użytkownika już istnieje w PostgreSQL
- 11. Funkcja sprawdzania jquery sprawdź czy numer
- 12. Sprawdź, czy czegoś nie ma na liście w Pythonie
- 13. Sprawdź, czy istnieje tabela
- 14. Sprawdź, czy numer NSN jest pusty
- 15. SparseArray, sprawdź czy klucz istnieje
- 16. Sprawdź zmienną, jeśli znajduje się na liście
- 17. Sprawdź, czy istnieje klasa
- 18. Węzeł - Sprawdź, czy istnieje katalog
- 19. Sprawdź, czy katalog istnieje na serwerze FTP
- 20. Sprawdź numer wersji gem
- 21. jQuery sprawdź, czy onClick istnieje na element
- 22. Sprawdź, czy wartość istnieje w dataTable?
- 23. Sprawdź, czy wartość istnieje w tablicy
- 24. Jak mogę sprawdzić, czy dane już istnieją na liście combobox?
- 25. Node.js - Mongoose - Sprawdź, czy istnieje zbiór
- 26. Sprawdź, czy element ma już datepicker jQuery
- 27. Lalka - sprawdź, czy pakiet jest już zdefiniowany?
- 28. Czy istnieje maksymalny numer wersji w hbase?
- 29. sprawdź obecność na liście szablon django
- 30. Sprawdź, czy stała jest już zdefiniowana
Dlaczego po prostu nie użyć 'zestawu'? – loganfsmyth