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

Joa*_*nge 473 python collections search contains list

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

if list.contains(myItem):
    # do something
Run Code Online (Sandbox Code Playgroud)

def*_*fuz 800

您可以使用以下语法:

if myItem in list:
    # do something
Run Code Online (Sandbox Code Playgroud)

另外,逆运算符:

if myItem not in list:
    # do something
Run Code Online (Sandbox Code Playgroud)

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

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

  • @AlexF:匹配是因为`(" - skip-ias")`不是元组,而是字符串(括号什么也不做,就像`(1)`只是一个整数).如果你想要一个1元组,你需要在单个项后添加一个逗号:`("--skip-ias",)`(或`(1,)`). (3认同)

Ant*_*Ant 63

除了其他人所说的,你可能还有兴趣知道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
>>>         
Run Code Online (Sandbox Code Playgroud)


Mr.*_*uig 5

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

if myItem in list:
    #do things
Run Code Online (Sandbox Code Playgroud)

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

if myItem not in list:
    #do things
Run Code Online (Sandbox Code Playgroud)

  • 如果元素不存在,`index` 方法不会返回 -1,它会抛出 `ValueError` 异常。 (15认同)

Dus*_*ndi 5

最近,我想出了这支班轮,以获取True列表中是否包含任何出现次数的项目,或者False该列表中没有出现任何事件或根本没有任何事件。使用next(...)会给它提供默认的返回值(False),这意味着它的运行速度应比运行整个列表理解的速度快得多。

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

  • 我认为“ any(item == test_item for list_to_test中的项目)”也可以工作吗? (3认同)