提问人:soapcmd 提问时间:11/15/2023 最后编辑:mkrieger1soapcmd 更新时间:11/15/2023 访问量:64
获取 2 个列表之间的差异(列表有重复的值)[duplicate]
Get the difference between 2 lists (the lists has duplicated values) [duplicate]
问:
假设我有
list1 = [1, 2, 2, 3, 3]
list2 = [2, 2, 3]
所以区别应该是.[1, 3]
set(list1) - set(list2)
忽略重复的值,这不是我想要的。
与 相同。[i for i in list1 if i not in list2]
答:
-1赞
ayekaunic
11/15/2023
#1
溶液
def list_difference(list1, list2):
difference = []
for item in list1:
if item not in list2:
difference.append(item)
else:
list2.remove(item)
return difference
list1 = [1, 2, 2, 3, 3]
list2 = [2, 2, 3]
print(list_difference(list1, list2))
这将为您提供输出:
[1, 3]
解释:
此解决方案的工作原理是循环访问 list1 中的每个项目。如果某个项目不在 list2 中,则会将其添加到差异列表中。如果某个项目位于 list2 中,则会将其从 list2 中删除,以防止多次计数。此方法考虑 list1 和 list2 中的重复项。
因此,对于给定的列表 list1 = [1, 2, 2, 3, 3] 和 list2 = [2, 2, 3],项目 2 在 list1 中重复两次,在 list2 中重复两次。当我们在 list1 中找到前 2 个时,我们会检查它是否在 list2 中。既然是这样,我们就把它从 list2 中删除,然后转到 list1 中的下一项。我们这样做,直到我们在 list1 中找到不在 list2 中的 2,此时我们将其添加到差异列表中。同样的逻辑也适用于第 3 项。
结果,我们得到的列表差值为 [1, 3]。
评论
list2
list1