我有以下内容来检查列表是否在列表列表中。 它返回错误的结果。这有什么问题?
my_list = [['1', '2', '3'], ['7','8','9','10'], ['1','3','4','5'], ['10','11','12','13']]
w = ['1', '2', '3'] -> True
a = ['1','2'] -> True
b = ['7','8','9','10'] -> True
f = ['1', '0'] -> False
c = [['1','3','4','5'], ['10','11','12','13']] -> True
d = [['1','3','4','4'], ['10','11','12','15']] -> False
def x_in_y(search_list, my_list):
return any([s in my_list for s in search_list])
print x_in_y(c, my_list)
print x_in_y(a, my_list)
部分匹配应该是正确的,只要列表中的所有元素都出现在 my_list 中。
最佳答案
您可以使用 in
直接检查一个列表是否包含在另一个列表中:
return search_list in my_list
但由于您还想获得部分包含匹配项,甚至是列表包含项的列表,您可以试试这个:
def x_in_y(search_list, my_list):
if any(isinstance(i, list) for i in search_list):
return all([x_in_y(x,my_list) for x in search_list])
return any([m for m in my_list if m == search_list or set(search_list) <= set(m)])
这将检查列表中的列表匹配、嵌套列表包含以及列表中的列表子集。
关于python - 检查列表是否在列表列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55486472/