Tôi thấy mọi người đang sử dụng any
để thu thập một danh sách khác để xem liệu một mục có tồn tại trong danh sách không, nhưng có cách nào nhanh chóng để làm không?:
if list.contains(myItem):
# do something
Tôi thấy mọi người đang sử dụng any
để thu thập một danh sách khác để xem liệu một mục có tồn tại trong danh sách không, nhưng có cách nào nhanh chóng để làm không?:
if list.contains(myItem):
# do something
Câu trả lời:
Bạn có thể sử dụng cú pháp này:
if myItem in list:
# do something
Ngoài ra, toán tử nghịch đảo:
if myItem not in list:
# do something
Nó hoạt động tốt cho danh sách, bộ dữ liệu, bộ và ký tự (phím kiểm tra).
Lưu ý rằng đây là thao tác O (n) trong danh sách và bộ dữ liệu, nhưng hoạt động O (1) theo bộ và ký tự.
o='--skip'; o in ("--skip-ias"); # returns True !
("--skip-ias")
không phải là một tuple, mà là một chuỗi (dấu ngoặc đơn không làm gì cả, giống như (1)
chỉ là một số nguyên). Nếu bạn muốn 1 tuple, bạn cần thêm dấu phẩy sau một mục duy nhất: ("--skip-ias",)
(hoặc (1,)
).
Ngoài những gì người khác đã nói, bạn cũng có thể quan tâm để biết rằng những gì in
được gọi làlist.__contains__
phương thức, mà bạn có thể định nghĩa trên bất kỳ lớp nào bạn viết và có thể cực kỳ tiện dụng để sử dụng python ở mức độ đầy đủ.
Một cách sử dụng ngu ngốc có thể là:
>>> class ContainsEverything:
def __init__(self):
return None
def __contains__(self, *elem, **k):
return True
>>> a = ContainsEverything()
>>> 3 in a
True
>>> a in a
True
>>> False in a
True
>>> False not in a
False
>>>
Gần đây tôi đã đưa ra một lớp lót này để nhận True
nếu một danh sách có chứa bất kỳ số lần xuất hiện nào của một mặt hàng, hoặc False
nếu nó không có sự xuất hiện hoặc không có gì cả. Việc sử dụng next(...)
cung cấp cho giá trị trả về mặc định này ( False
) và có nghĩa là nó sẽ chạy nhanh hơn đáng kể so với việc chạy toàn bộ danh sách.
list_does_contain = next((True for item in list_to_test if item == test_item), False)
any(item == test_item for item in list_to_test)
Tôi cũng sẽ làm việc chứ?
Phương thức danh sách index
sẽ trả về -1
nếu mục không có mặt và sẽ trả về chỉ mục của mục trong danh sách nếu có. Ngoài ra, trong một if
tuyên bố, bạn có thể làm như sau:
if myItem in list:
#do things
Bạn cũng có thể kiểm tra nếu một phần tử không có trong danh sách với câu lệnh if sau:
if myItem not in list:
#do things
index
phương pháp không trả lại -1 nếu nguyên tố này là không có mặt, nó ném một ValueError
ngoại lệ.