简体   繁体   English

如何检查列表列表中是否存在列表列表?

[英]How do I check if a list of lists exists in a list of lists?

I got a list of lists b and I want to check if they exist in list a which is also a list of lists.我得到了列表b的列表,我想检查它们是否存在于列表a中,这也是列表的列表。

I'm currently using the following method which is quite time-consuming.我目前正在使用以下方法,这非常耗时。 Is there a faster way?有更快的方法吗?

b  = [[5], [5, 3], [5, 3, 1], [5, 3, 1, 2]] 
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

result = all(elem in b[0] for elem in a[0])
print(result)
result = all(elem in b[1] for elem in a[0])
print(result)
result = all(elem in b[2] for elem in a[0])
print(result)
result = all(elem in b[3] for elem in a[0])
print(result)

result = all(elem in b[0] for elem in a[1])
print(result)
result = all(elem in b[1] for elem in a[1])
print(result)
result = all(elem in b[2] for elem in a[1])
print(result)
result = all(elem in b[3] for elem in a[1])
print(result) 

result = all(elem in b[0] for elem in a[2])
print(result)
result = all(elem in b[1] for elem in a[2])
print(result)
result = all(elem in b[2] for elem in a[2])
print(result)
result = all(elem in b[3] for elem in a[2])
print(result) 

Output: Output:

>>>False
>>>False
>>>False
>>>True
>>>False
>>>False
>>>False
>>>False
>>>False
>>>False
>>>False
>>>False

You do the same thing with a double loop O(n^2):你用双循环 O(n^2) 做同样的事情:

for i in range(len(a)):
    for j in range(len(b)):
        print(all(elem in a[i] for elem in b[j]))
for i in range(len(b)):
   if b[i] in a:
      return True
   else:
      return False

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM