列表是否有一个简短的包含函数?
我看到人们正在使用any
来收集另一个列表,看看列表中是否存在一个项目,但有没有一个快速的方法来做?
if list.contains(myItem): # do something
你可以使用这个语法:
if myItem in list: # do something
另外,逆运算符:
if myItem not in 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 >>>
如果该项目不存在,list方法index
将返回-1
如果该项目存在,将返回该项目的索引。 或者在if
语句中,您可以执行以下操作:
if myItem in list: #do things
您还可以使用以下if语句检查元素是否不在列表中:
if myItem not in list: #do things
如果列表中包含任何事件的数量,我最近想出了一个这样的class轮,如果它不包含任何事件或者什么都不包含,那么最近得到了True
。 使用next(...)
会给出一个默认的返回值( False
),意味着它的运行速度要比运行整个列表理解要快得多。
list_does_contain = next((True for item in list_to_test if item == test_item), False)
我发现这是最简单的方法,因为您无法真正使用for循环技术来实现未声明的硬编码值。
if list.count(myItem) >= 1: do something...
作为一个有问题的例子:
list = [111,222,333] for 111 in list: print "contained"
会抛出一个错误,而“如果list.count(111)> = 1”不会。