一尘不染

在列表中查找非常见元素

algorithm

我正在尝试编写一段可以自动分解表达式的代码。例如,如果我有两个列表[1,2,3,4]和[2,3,5],则代码应该能够在两个列表[2,3]中找到共同的元素,并组合其他元素一起在新列表中,即[1,4,5]。

从这篇文章:如何找到列表交集?我看到可以找到共同的元素

set([1,2,3,4]&set([2,3,5]).

有没有一种简单的方法可以从每个列表中检索非公共元素,在我的示例中为[1,4]和[5]?

我可以继续做一个for循环:

lists = [[1,2,3,4],[2,3,5]]
conCommon = []
common = [2,3]
for elem in lists:
    for elem in eachList:
    if elem not in common:
        nonCommon += elem

但这似乎是多余的且效率低下的。Python是否提供任何方便的功能可以做到这一点?提前致谢!!


阅读 202

收藏
2020-07-28

共1个答案

一尘不染

sets 使用对称差分运算符(也称为XOR运算符):

>>> set([1,2,3]) ^ set([3,4,5])
set([1, 2, 4, 5])
2020-07-28