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

发布于 2021-01-29 19:21:33

我有两个列表需要合并,第二个列表忽略了第一个列表的重复项。..有点难以解释,所以让我展示一个代码看起来像什么,以及我想要什么的示例。

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上的集合会清除它已经具有的重复值。所以我只是想知道什么是实现此所需组合的最佳/最快方法。

谢谢。

关注者
0
被浏览
98
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

    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)))
    


推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看