想象一个函数:
def Intersects (x, list1, list2, list3):
if x in list1 and x in list2 and x in list3: return True
return False
必须有更好的方法来执行此操作,但我无法弄清楚。我怎样才能做到这一点? (性能很重要)
编辑:这次我遇到了一个相关但更难的问题。这次我有 3 个不相关的整数,我需要测试它们是否也相交。
喜欢:
1, 2, 3 <-- elements to look for
if InAll ((1, 2, 3)) ...
但我不是在寻找元组,而是在寻找整数。如何解压元组并进行相同的搜索?
请您参考如下方法:
如果您希望能够为其提供任意数量的列表(不仅仅是三个),您可能会喜欢:
def inAll(x, *lsts):
return all((x in l) for l in lsts)
如果您多次检查这些列表中的成员资格(即在许多 x 上),您需要将每个列表都设为 set在开始循环 x 之前。
从您最近的编辑来看,您似乎还希望能够在 x 中传递多个项目。代码为:
def inAll(xs, *lsts):
return all(all(x in l for x in xs) for l in lsts)
