合并两个列表并去重,但不去掉原列表中的重复项
我有两个列表,我想把它们合并在一起,但第二个列表中与第一个列表重复的部分要忽略掉。这个说起来有点复杂,下面我给个例子,展示一下代码长什么样,以及我想要的结果。
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”的值,但第二个列表中额外的2和5的值并没有被加到第一个列表里。
通常像这种情况我会使用集合(sets),但是如果对第一个列表使用集合的话,它里面的重复值就会被去掉。所以我只是想知道,最好的、最快的方式来实现我想要的合并效果是什么。
谢谢。
相关问题:
12 个回答
78
你可以使用集合:
first_list = [1, 2, 2, 5]
second_list = [2, 5, 7, 9]
resultList= list(set(first_list) | set(second_list))
print(resultList)
# Results in : resultList = [1,2,5,7,9]
131
在编程中,有时候我们需要让程序在特定的条件下执行某些操作。这就像给程序设定了一些规则,只有当这些规则被满足时,程序才会继续运行。
比如说,你可能希望程序在用户输入的数字大于10时,才执行某个计算。这样可以避免不必要的错误,确保程序只在合适的情况下工作。
在编写代码时,我们可以使用“条件语句”来实现这个功能。条件语句就像是一个检查点,程序会在这里停下来,看看条件是否成立。如果成立,程序就会执行接下来的代码;如果不成立,程序就会跳过这些代码,继续执行其他部分。
总之,条件语句帮助我们控制程序的运行流程,让它更加智能和灵活。
resulting_list = list(first_list)
resulting_list.extend(x for x in second_list if x not in resulting_list)
237
你需要把第二个列表中那些不在第一个列表里的元素添加到第一个列表中。使用集合(sets)是找出这些元素最简单的方法,可以这样做:
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)))