我的问题是,如何检查列表列表中的所有元素是否都在另一个列表列表中?或者更好的措辞,如何检查一个列表是否是另一个列表列表的子集?下面的答案只有在您有一个字符串列表时才有效,但答案对我的情况不起作用。
How to check if all items in a list are there in another list?
我尝试的东西是这样的:
if all(item in list1 for item in list2):
哪个不起作用。
答案 0 :(得分:3)
将您的子列表转换为元组,例如:
In [2]: a = [[2,3],[5,6],[8,9]]
In [3]: b = [[2,3],[5,6],[8,9], [10,11]]
In [4]: set(tuple(x) for x in a).issubset(tuple(x) for x in b)
Out[4]: True
答案 1 :(得分:1)
如果你甚至试图看看这段代码给你的东西,这真的很容易......
>>> l1 = [1,2]
>>> l2 = [1,2,3,4,5]
>>> all(l1)
True
>>> [item in l1 for item in l2]
[True, True, False, False, False]
>>> help(all)
Help on built-in function all in module builtins:
all(...)
all(iterable) -> bool
Return True if bool(x) is True for all values x in the iterable.
If the iterable is empty, return True.
无论如何,您需要将它们转换为集合并计算issubset
方法
>>> s1 = set(l1)
>>> s2 = set(l2)
>>> s1.issubset(s2)
True
编辑是的,正如其他人已经注意到的那样,只有当列表中的所有元素都是唯一的并且您不是在寻找设定的数学但是为了完全匹配时才有效,因为默认设置是收集独特的物品。