我知道这个问题在这里已经问过几次了,我经历了大多数问题,但是由于某种原因,我无法将这些解决方案用于当前的问题。
我有一个包含11个子列表的列表:
list_a = [[1,2,3],[2,3,4],[3,4,5].....[11,12,13]]
我还有一个随机生成的长度为9的列表,范围为1到13:
list_b = [1,4,7,8,2,3,8,9]
我想创建一个遍历list_a子列表的函数,并且仅当该子列表中的所有项目都存在于list_b中时才返回true。我尝试了“全部”功能,但在这里似乎不起作用,因为它需要列表中的所有项目,而不是子列表。
for i in list_a:
if all(a in i for a in list_b):
print ('Yes')
先谢谢您。
答案 0 :(得分:1)
您刚刚弄错了all()
逻辑。您需要检查子列表中的每个项目是否在list_b
中(而不是检查list_b
中的每个项目是否在子列表中)。
将all()
的逻辑更改为:
all(a in list_b for a in i)
顺便说一句,如果将list_b
更改为set,则效率会更高,并且可以简化事情。
答案 1 :(得分:0)
您的想法是正确的,但是您正在检查list_b
的子列表中是否存在list_a
中的元素,而您的要求与此相反。您可以在此处使用set
操作:
>>> list_a = [[1,2,3],[2,3,4],[3,4,5],[11,12,13]]
>>> list_b = [1,4,7,8,2,3,8,9]
>>> all(set(a).issubset(set(list_b)) for a in list_a)
False
或
>>> list_a = [[1,2,3],[2,3,4],[3,4,8]]
>>> all(set(a).issubset(set(list_b)) for a in list_a)
True