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

2024-04-19 23:56:22 发布

您现在位置:Python中文网/ 问答频道 /正文

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

if list.contains(myItem):
    # do something

Tags: 方法列表ifanydosomethinglistcontains
3条回答

您可以使用以下语法:

if myItem in list:
    # do something

此外,逆运算符:

if myItem not in list:
    # do something

它对列表、元组、集合和dict(check key)都很有用。

请注意,这是列表和元组中的O(n)操作,而在集合和dict中是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。使用next(...)会给它一个默认的返回值(False),这意味着它应该比运行整个列表理解快得多。

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

相关问题 更多 >