我看到人们正在使用any
收集另一个列表来查看列表中是否存在某个项目,但是有没有一种快速的方法来做这样的事情?
if list.contains(myItem):
# do something
我看到人们正在使用any
收集另一个列表来查看列表中是否存在某个项目,但是有没有一种快速的方法来做这样的事情?
if list.contains(myItem):
# do something
您可以使用以下语法:
if myItem in some_list:
# do something
此外,逆运算符:
if myItem not in some_list:
# do something
它适用于列表、元组、集合和字典(检查键)。
请注意,这在列表和元组中是 O(n) 操作,但在集合和字典中是 O(1) 操作。
除了其他人所说的之外,您可能还想知道什么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
它是否包含任何事件或根本没有。Usingnext(...)
给它一个默认的返回值 ( False
) 并且意味着它应该比运行整个列表理解运行得更快。
list_does_contain = next((True for item in list_to_test if item == test_item), False)
如果项目不存在, list 方法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
. 但我不确定这是否有任何错误。
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")
输出:
不存在