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

我看到人们正在使用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”不会。