给定一个列表xs和一个值item,我如何检查xs是否包含item(即,如果xs的任何元素等于item)?是否有类似xs。contains(item)的东西?


有关性能考虑因素,请参见检查列表中是否存在值的最快方法。


当前回答

如果条目不存在,列表方法index将返回-1;如果条目存在,则返回该条目在列表中的索引。或者在if语句中执行以下操作:

if myItem in list:
    #do things

你也可以用下面的if语句检查一个元素是否不在列表中:

if myItem not in list:
    #do things

其他回答

还有list方法:

[2, 51, 6, 8, 3].__contains__(8)
# Out[33]: True
[2, 51, 6, 3].__contains__(8)
# Out[33]: False

如果条目不存在,列表方法index将返回-1;如果条目存在,则返回该条目在列表中的索引。或者在if语句中执行以下操作:

if myItem in list:
    #do things

你也可以用下面的if语句检查一个元素是否不在列表中:

if myItem not in list:
    #do things

Use:

if my_item in some_list:
    ...

同样,逆运算:

if my_item not in some_list:
    ...

它适用于列表、元组、集和字典(检查键)。

注意,这是在列表和元组中的O(n)操作,但在集合和字典中的O(1)操作。

还有一种使用索引的方法。但我不确定这是否有任何错误。

list = [5,4,3,1]
try:
    list.index(2)
    #code for when item is expected to be in the list
    print("present")
except:
    #code for when item is not expected to be in the list
    print("not present")

输出:

不存在

除了其他人所说的,你可能还想知道In所做的是调用列表。__contains__方法,你可以在你写的任何类上定义它,并且可以非常方便地充分使用python。

愚蠢的用法可能是:

>>> 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
>>>