是否有一个简短的包含列表函数?

我如何检查列表xs是否包含一个项目?

if xs.contains(item):
...
728394 次浏览

使用:

if my_item in some_list:
...

同样,逆运算:

if my_item not in some_list:
...

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

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

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

if myItem in list:
#do things

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

if myItem not in list:
#do things

除了其他人所说的,您可能还感兴趣的是,in所做的是调用list.__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
>>>

我最近想出了这个程序,如果一个列表包含一个项目的任意数量的出现,则得到True,如果它没有出现或根本没有出现,则得到False。使用next(...)会给它一个默认的返回值(False),这意味着它应该比运行整个列表理解快得多。

# EYZ0

还有list方法:

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

还有另一个方法使用index。但我不确定这是否有任何错误。

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

输出:

不存在