是否有列表的短包含功能?

问题描述 投票:431回答:4

我看到人们正在使用any来收集另一个列表以查看列表中是否存在某个项目,但是有一个快速的方法可以做到吗?:

if list.contains(myItem):
    # do something
python list search collections contains
4个回答
749
投票

您可以使用以下语法:

if myItem in list:
    # do something

另外,逆运算符:

if myItem not in list:
    # do something

它适用于列表,元组,集合和dicts(检查键)。

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


60
投票

除了其他人所说的,你可能也有兴趣知道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
>>>         

5
投票

我最近想出了这个衬垫,如果一个列表包含任意数量的项目,则获取True,如果它不包含任何事件或者根本没有任何内容,我就会得到False。使用next(...)给出了一个默认的返回值(False),意味着它应该比运行整个列表理解要快得多。

list_does_contain = next((True for item in list_to_test if item == test_item), False)


3
投票

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

if myItem in list:
    #do things

您还可以使用以下if语句检查元素是否不在列表中:

if myItem not in list:
    #do things
© www.soinside.com 2019 - 2024. All rights reserved.