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

2024-09-21 11:37:20 发布

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

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

if list.contains(myItem):
    # do something

Tags: 项目方法列表ifanydosomethinglist
3条回答

我最近提出了一个线性表达式,用于在列表中包含任意数量的项目时获取True,或者在列表中不包含任何项目或任何项目时获取False。使用next(...)会给它一个默认的返回值(False),这意味着它应该比运行整个列表快得多

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

除了其他人所说的之外,您可能还想知道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
>>>         

您可以使用以下语法:

if myItem in list:
    # do something

此外,逆运算符:

if myItem not in list:
    # do something

它适用于列表、元组、集合和dict(检查键)

注意这在列表和元组中是一个O(n)操作,但在集合和dict中是一个O(1)操作

相关问题 更多 >

    热门问题