我正在寫一個python代碼,我將把數字附加到列表中,但是我不希望列表中的數字重複。那麼,在我做list.append()
之前,我該如何檢查一個數字是否已經在列表中?檢查一個數字是否已經存在於python列表中
回答
你可以做
if item not in mylist:
mylist.append(item)
但是,你真的應該使用一組,像這樣:
myset = set()
myset.add(item)
編輯:如果順序很重要,但是你的列表是非常大的,你應該同時使用清單和一套,如下:
mylist = []
myset = set()
for item in ...:
if item not in myset:
mylist.append(item)
myset.add(item)
通過這種方式,您可以快速查找元素的存在,但是您可以繼續進行排序。如果你使用天真的解決方案,你會得到O(n)的查找性能,如果你的列表很大,這可能會很糟糕
或者@larslars指出,你可以使用OrderedDict來達到同樣的效果:
from collections import OrderedDict
mydict = OrderedDict()
for item in ...:
mydict[item] = True
對'set'沒有'append'這樣的方法。你當然意味着'add'。 –
同樣,集合是*無秩序*,所以它不是等價的。 –
謝謝,已更正 –
如果你想在你的列表中的獨特元素,那麼爲什麼不使用一組,如果當然,爲了不要緊,你: -
>>> s = set()
>>> s.add(2)
>>> s.add(4)
>>> s.add(5)
>>> s.add(2)
>>> s
39: set([2, 4, 5])
如果訂單是值得關注的問題,那麼你可以使用: -
>>> def addUnique(l, num):
... if num not in l:
... l.append(num)
...
... return l
您也可以找到一個OrderedSet
配方,這被稱爲在Python Documentation
請注意,如果訂單很重要,這將不起作用。 –
@Lattyware ..當然。增加了這一點。 –
所以如果我想讓數字按升序排列,我必須這樣做嗎?你能解釋一下那部分嗎? (是的,我必須有一個有序集合) – PhoonOne
你也許可以使用一組對象,而不是。只需要add
號碼即可。它們本質上不會複製。
如果你希望你的升序排序,你可以將它們添加到一組,然後排序設置成遞增列表編號。
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. 檢查列表是否已經在python中的字典中
- 2. 如何檢查文件是否已經存在於列表中?
- 3. 檢查字符串是否已經存在於工作表中
- 4. 如何檢查一個整數是否已經在列表中
- 5. 我如何檢查一個項目是否已經存在於列表中?
- 6. 檢查一個項目是否已經存在於JComboBox中?
- 7. 檢查一個項目是否已經存在於listbox1中
- 8. MySQL檢查表是否已經存在
- 9. 檢查mysql表是否已經存在
- 10. 檢查表單是否已經存在
- 11. 檢查數據是否已經存在
- 12. 如何檢查一個集合是否已經存在於ArangoDB
- 13. 檢查SQLite數據庫中是否已經存在一個值
- 14. CodeIgniter - 檢查數據庫中是否已經存在一個值
- 15. 檢查數組是否已經存在於一個VBA數組中
- 16. 搜索一個列表來檢查一個子對象是否已經存在
- 17. 檢查一個元素是否已經存在於javascript中的數組中
- 18. 檢查組合是否已經從列表理解中存在
- 19. 檢查數據是否已經存在於chrome.storage.sync中
- 20. 檢查記錄是否已經存在於數據庫中
- 21. 檢查數組是否已經存在於會話中
- 22. 如何檢查數組列表中是否已經存在字符串值?
- 23. 檢查表中是否已經存在字段
- 24. 如何檢查表中的字段是否已經存在?
- 25. 如何檢查一個查詢中的主鍵列表是否已經存在於數據庫中?
- 26. 檢查一個項目是否已經存在於一個txt文件中
- 27. 如何檢查一個MySQL數據庫是否已經存在於PHP中?
- 28. 如何檢查一個實體是否已經存在於永久存儲中
- 29. 如何檢查一個IP是否已經存儲在mysql中?
- 30. Rails,檢查url是否已經存在
爲什麼不只是使用'set'? – loganfsmyth