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

标签 python list

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

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

谢谢。

最佳答案

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

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

关于python - 合并两个列表并删除重复项,而不删除原始列表中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1319338/

相关文章:

python - sqlalchemy func.group_concat 和数据的随机顺序

python - 将元素分配给字典列表中的一个数组

java - 将数组添加到 List<String[]> 时出错

python - 在 Python 中有效地交换列表元素

java - 自制泛型List类转换错误

java - 了解 Java 集合中的 Java 引用

C++:如何有效地将值分配给 vector 列表?

python - 我无法将库添加到 python_path

python - mllib NaiveBayes 中的类数量有限制吗?调用 model.save() 时出错

python - 使用 pandas 将函数应用于每行的每个列值