合并两个列表并删除重复项,而不删除原始列表中的重复项

新手上路,请多包涵

我有两个列表需要合并,其中第二个列表忽略了第一个列表的任何重复项。 .. 有点难以解释,所以让我展示一个代码的例子,以及我想要的结果。

 first_list = [1, 2, 2, 5]

second_list = [2, 5, 7, 9]

# The result of combining the two lists should result in this list:
resulting_list = [1, 2, 2, 5, 7, 9]

您会注意到结果有第一个列表, 包括 它的两个“2”值,但事实上 second_list 还有一个额外的 2 和 5 值并没有添加到第一个列表中。

通常对于这样的事情我会使用集合,但是 first_list 上的集合会清除它已经拥有的重复值。所以我只是想知道实现这种所需组合的最佳/最快方法是什么。

谢谢。

原文由 Lee Olayvar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 739
2 个回答

您需要将第二个列表中不在第一个列表中的元素附加到第一个列表 - 集合是确定它们是哪些元素的最简单方法,如下所示:

 first_list = [1, 2, 2, 5]
second_list = [2, 5, 7, 9]

in_first = set(first_list)
in_second = set(second_list)

in_second_but_not_in_first = in_second - in_first

result = first_list + list(in_second_but_not_in_first)
print(result)  # Prints [1, 2, 2, 5, 9, 7]

或者,如果您更喜欢单线 8-)

 print(first_list + list(set(second_list) - set(first_list)))

原文由 RichieHindle 发布,翻译遵循 CC BY-SA 4.0 许可协议

resulting_list = list(first_list)
resulting_list.extend(x for x in second_list if x not in resulting_list)

原文由 Ned Batchelder 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题