给出
a = [1, 2, 3, 4]
b = [10, 1, 20, 30, 4]
我想检查a
中是否存在b
中的任何元素。
>>> [i in b for i in a]
Out[45]: [True, False, False, True]
上面的代码完成了部分工作。下一步可能是reduce
。
但是,如果没有我自己的or函数实现,我没有得到下面的代码。
def is_any_there(a, b):
one_by_one = [i in b for i in a]
def my_or(a,b):
if a or b:
return True
else:
return False
return reduce(my_or, one_by_one)
如何避免重写or
函数?
答案 0 :(得分:4)
is_there_any
只需重新实现自{2}以来可用的any
函数:
any(x in b for x in a)
此外,my_or
已在标准库中以operator.or_
的形式提供。
答案 1 :(得分:4)
如果项目可以播放,那么您可以使用set.isdisjoint()
:
>>> a = [1, 2, 3, 4]
>>> b = [10, 1, 20, 30, 4]
>>> not set(a).isdisjoint(b)
True
>>> b = [10, 10, 20, 30, 40]
>>> not set(a).isdisjoint(b)
False