我有两个形状相同的列表列表。list1 = [[1,2,3], [], [4,5], []]list2 = [[1,2], [7], [4,5], []]我需要这个列表列表:[[1,2], [], [4,5], []]我怎样才能得到它?
3 回答

呼如林
TA贡献1798条经验 获得超3个赞
假设list1
和list2
中的每个列表只包含不同的元素,并且您不关心输出中元素的顺序,您可以使用set
交集来帮助您:
output = [list(set(l1) & set(l2)) for l1, l2 in zip(list1, list2)]

慕村225694
TA贡献1880条经验 获得超4个赞
通过较短列表的索引获取每个子列表。
[list(set(list1[x]) & set(list2[x])) for x in range(min(len(list1), len(list2)))]
# [[1, 2], [], [4, 5], []]
这将产生一个与最短输入长度相同的列表。

九州编程
TA贡献1785条经验 获得超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], []]
添加回答
举报
0/150
提交
取消