我想查看列表的一个列表(列表A)中的所有项目是否出现在列表的另一列表(列表B-完整列表)中,然后将返回true或false保存到列表中。
例如,下面是两个列表(列表列表)
List A : [ [1,2],[3,4],[8,9] ]
List B : [ [1,2,3,4], [5,6,7],[8,10] ]
预期结果
Result List : [[True,False,False]
答案 0 :(得分:0)
您可以使用以下代码:
A = [ [1,2],[3,4],[8,9] ]
B = [ [1,2,3,4], [5,6,7],[8,10] ]
result = []
for x,y in zip(A, B):
if all(e in y for e in x):
result.append(True)
else:
result.append(False)
产生如下列表:
[True, False, False]
代码使用zip()
函数,将两个列表中的对应项配对在一起。
此外,行all(e in y for e in x)
是代码的必要部分。它检查A的第一子列表中的 all 元素是否在第一子列表B中,依此类推。
答案 1 :(得分:0)
您可以在zip()
上将issubset()
与set
方法一起使用,如下所示:
[True if set(x).issubset(set(y)) else False for x,y in zip(a,b)]
性能方面,我认为这并不比ammar的答案更好。但这是一个班轮;-)
答案 2 :(得分:0)
A = [[1,2],[3,4],[8,9]]
B = [[1,2,3,4], [5,6,7],[8,10]]
result = [True if set(i[0]).issubset(i[1]) else False for i in list(zip(A,B))]
print(result)
# 158 µs ± 14.7 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
输出:
[True, False, False]
答案 3 :(得分:0)
尝试list-comprehension
和zip
:
a = [ [1,2],[3,4],[8,9] ]
b = [ [1,2,3,4], [5,6,7],[8,10] ]
result = [True if set(i[0]).issubset(set(i[1])) else False for i in zip(a,b) ]
print(result)
输出:
C:\Users\Desktop>py x.py
[True, False, False]