我有两个形状相同的列表清单。
list1 = [[1,2,3], [], [4,5], []]
list2 = [[1,2], [7], [4,5], []]
我需要以下列表列表:
[[1,2], [], [4,5], []]
我如何得到它?
P.S .:这些主题对我没有帮助:
答案 0 :(得分:5)
假设list1
和list2
中的每个列表仅包含不同的元素,并且您不关心输出中元素的顺序,可以使用set
交集来帮助您:< / p>
output = [list(set(l1) & set(l2)) for l1, l2 in zip(list1, list2)]
答案 1 :(得分:4)
浏览并使用集合:
list1 = [[1,2,3], [], [4,5], []]
list2 = [[1,2], [7], [4,5], []]
intersections = [list(set(s1)&set(s2)) for s1, s2 in zip(list1, list2)]
输出:
[[1, 2], [], [4, 5], []]
答案 2 :(得分:4)
通过短列表的索引获取每个子列表。
[list(set(list1[x]) & set(list2[x])) for x in range(min(len(list1), len(list2)))]
# [[1, 2], [], [4, 5], []]
这将导致列表的长度与最短输入的长度相同。
答案 3 :(得分:0)
在这里:
list1 = [[1,2,3], [], [4,5], []]
list2 = [[1,2], [7], [4,5], []]
new_list = []
for i in range(len(list1)):
inter = [x for x in list1[i] if x in list2[i]]
new_list.append(inter)
print(new_list)
输出:
[[1, 2], [], [4, 5], []]