Python __contains__函数的多个参数

Python __contains__函数的多个参数,python,contains,Python,Contains,是否可以在列表中传递多个参数的“_uuu”contains _uuu”函数?我想检查列表中的至少一项是否存在于其他列表中 例如: [0,1,4,8,87,6,4,7,5,'a','f','er','fa','vz'] 我想检查一下(8,5,'f')中的一项是否在该列表中 我该怎么做呢?好的,\uuuuuuuuuuuuuuuuuuuuuuuu>只接受一个参数,不能更改 但是,您可以执行以下操作以获得所需的结果: >>> a = [0,1,4,8,87,6,4,7,5,'a','f

是否可以在列表中传递多个参数的“_uuu”contains _uuu”函数?我想检查列表中的至少一项是否存在于其他列表中

例如: [0,1,4,8,87,6,4,7,5,'a','f','er','fa','vz']

我想检查一下(8,5,'f')中的一项是否在该列表中


我该怎么做呢?

好的,
\uuuuuuuuuuuuuuuuuuuuuuuu>只接受一个参数,不能更改

但是,您可以执行以下操作以获得所需的结果:

>>> a = [0,1,4,8,87,6,4,7,5,'a','f','er','fa','vz']
>>> any(map(lambda x: x in a, (8,5,'f')))
True

您可以使用以下集合:

list1 = [0,1,4,8,87,6,4,7,5,'a','f','er','fa','vz']
tuple1 = (8,5,'f')

def my_contains(first, second):
    return bool(set(first).intersection(second))

my_contains(list1, tuple1) # True
my_contains(list1, [1]) # True
my_contains(list1, (125,178,999)) # False
使用内置的类型

>>> l =  [0,1,4,8,87,6,4,7,5,'a','f','er','fa','vz']
>>> s = (8,5,'f')
>>> bool(set(s) & set(l))
True
Set方法也将iterables作为参数,从而避免创建集合

最简洁:

>>> any((val in s) for val in l)
True
2.6提供set.isdisjoint(其他),它可能经过优化以在找到公共元素后立即返回

>>> not set(l).isdisjoint(s)
True
如果要循环:

>>> any((val in s) for val in l)
True

+1对于任何使用,也很好地演示了部分。使用生成器而不是map+lambda更像python。正如kevpie所指出的,第一个建议将比
any(x in a代表x in(8,5,'f'))更干净。
。每当lambda被作为第一个参数传递给
map
时,它就强烈地暗示应该使用理解表达式或生成器表达式来代替。intersection()可以直接获取第二个iterable。只需调用bool(someset)就可以生成True/False<代码>返回布尔值(集合(第一)。相交(第二))
需要注意的一个关键点是,基于集合的方法只有在所有涉及的值都是可散列的情况下才有效。如果无法保证,则有必要采用迭代解决方案(可能使用
any
builtin)。