Tôi đang viết mã python, nơi tôi sẽ thêm số vào danh sách, nhưng tôi không muốn các số trong danh sách lặp lại. Vậy làm thế nào để tôi kiểm tra xem một số đã có trong danh sách, trước khi tôi làm list.append()
?kiểm tra xem một số đã tồn tại trong danh sách trong python
Trả lời
Bạn có thể làm
if item not in mylist:
mylist.append(item)
Nhưng bạn thực sự cần sử dụng một bộ, như thế này:
myset = set()
myset.add(item)
EDIT: Nếu trật tự là rất quan trọng nhưng danh sách của bạn là rất lớn, bạn nên có lẽ sử dụng cả danh sách và một bộ, như sau:
mylist = []
myset = set()
for item in ...:
if item not in myset:
mylist.append(item)
myset.add(item)
Bằng cách này, bạn sẽ nhanh chóng tìm kiếm sự tồn tại của phần tử, nhưng bạn vẫn giữ được trật tự của mình. Nếu bạn sử dụng giải pháp ngây thơ, bạn sẽ nhận được hiệu suất O (n) để tra cứu và có thể xấu nếu danh sách của bạn lớn
Hoặc, như @larsman đã chỉ ra, bạn có thể sử dụng OrderedDict để có cùng tác dụng:
from collections import OrderedDict
mydict = OrderedDict()
for item in ...:
mydict[item] = True
Không có phương thức như 'append' cho' set'. Bạn chắc chắn có nghĩa là 'add'. –
Một lần nữa, bộ là * orderless *, vì vậy nó không tương đương. –
cảm ơn, sửa chữa –
Nếu bạn muốn có những yếu tố duy nhất trong danh sách của bạn, thì tại sao không sử dụng một bộ, nếu tất nhiên, trật tự không quan trọng dành cho bạn: -
>>> s = set()
>>> s.add(2)
>>> s.add(4)
>>> s.add(5)
>>> s.add(2)
>>> s
39: set([2, 4, 5])
Nếu trật tự là một vấn đề đáng quan tâm, sau đó bạn có thể sử dụng: -
>>> def addUnique(l, num):
... if num not in l:
... l.append(num)
...
... return l
bạn cũng có thể tìm thấy một công thức OrderedSet
, được đề cập đến trong Python Documentation
Lưu ý rằng điều này sẽ không hoạt động nếu thứ tự quan trọng. –
@Lattyware .. Tất nhiên. Đã thêm điểm đó. –
vì vậy nếu tôi muốn các số được tăng dần, tôi phải làm điều đó? bạn có thể giải thích thêm một phần nữa không? (vâng tôi phải có một bộ đặt hàng) – PhoonOne
bạn có thể sử dụng một đối tượng thiết lập để thay thế. Chỉ cần add
số cho bộ này. Họ vốn không sao chép.
Nếu bạn muốn số của bạn theo thứ tự tăng dần, bạn có thể thêm chúng vào bộ và sau đó sắp xếp tập hợp thành danh sách tăng dần.
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. Kiểm tra xem một giá trị có tồn tại trong một danh sách đã được Redis
- 2. làm thế nào để kiểm tra xem đối tượng đã tồn tại trong một danh sách
- 3. Kiểm tra xem giá trị đã tồn tại trong danh sách từ điển chưa?
- 4. Kiểm tra xem mạng ScanResult đã được cấu hình chưa (tồn tại trong danh sách getConfiguredNetworks())
- 5. XSLT: Kiểm tra xem một giá trị tồn tại trong một danh sách
- 6. Kiểm tra xem người dùng đã tồn tại trong drupal
- 7. Kiểm tra xem giá trị tồn tại trong một Generic Danh sách giá trị
- 8. Kiểm tra xem một đối tượng tồn tại trong VBScript
- 9. Kiểm tra xem các mục sau có tồn tại trong Danh sách <T>
- 10. LINQ để kiểm tra xem ID có tồn tại trong Danh sách
- 11. Kiểm tra xem danh sách lớn trong python đã thay đổi
- 12. Cách kiểm tra xem một thực thể đã tồn tại trong cửa hàng liên tục
- 13. python: kiểm tra xem url có tồn tại jpg không.
- 14. Kiểm tra xem tệp có tồn tại trong Yii
- 15. Kiểm tra xem đối tượng có phải là danh sách các danh sách trong python không?
- 16. Kiểm tra xem một mục đã tồn tại trong JComboBox chưa?
- 17. một lớp lót để kiểm tra xem có ít nhất một mục trong danh sách tồn tại trong danh sách khác không?
- 18. kiểm tra nếu giá trị đã tồn tại
- 19. SparseArray, kiểm tra xem key tồn tại
- 20. Kiểm tra xem bảng có tồn tại trong C#
- 21. Kiểm tra xem phần tử có tồn tại trong DIV
- 22. Kiểm tra xem có tồn tại enum trong Java
- 23. Kiểm tra xem bảng có tồn tại
- 24. Kiểm tra xem tệp có tồn tại trong ksh
- 25. Kiểm tra xem yếu tố tồn tại
- 26. Cách kiểm tra xem tệp có tồn tại trong makefile
- 27. Kiểm tra xem nút xml tồn tại trong PHP
- 28. Javascript: Kiểm tra xem classname tồn tại
- 29. Tại sao kiểm tra xem một tập tin tồn tại trong hadoop gây ra một NullPointerException?
- 30. Kiểm tra tồn tại khóa trong HashMap
Tại sao không chỉ sử dụng tập hợp '? – loganfsmyth