我正在尝试编写一段可以自动计算表达式的代码.例如,如果我有两个列表[1,2,3,4]和[2,3,5],代码应该能够找到两个列表中的公共元素,[2,3],并结合使用其余的元素在一个新的列表中,[1,4,5].
从这篇文章:如何找到列表交集? 我看到可以找到共同的元素
set([1,2,3,4]&set([2,3,5]).
Run Code Online (Sandbox Code Playgroud)
有一种简单的方法可以从每个列表中检索非公共元素,在我的例子中是[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
Run Code Online (Sandbox Code Playgroud)
但这似乎是多余和低效的.Python是否提供了可以做到的任何方便的功能?提前致谢!!
所以我知道如何找到两个列表的交集:
>>> a = [1,2,3,4,5]
>>> b = [1,3,5,6]
>>> list(set(a) & set(b))
[1, 3, 5]
Run Code Online (Sandbox Code Playgroud)
但是找到交叉点中未包含的所有元素的最佳方法是什么.我最初的想法是创建两个列表的联合,然后从联合中删除交集中的所有元素,如下所示:
>>> a = [1,2,3,4,5]
>>> b = [1,3,5,6]
>>> intersection = list(set(a) & set(b))
>>> union = list(set(a) | set(b))
>>> non_intersection = intersection - union
[2, 4, 6]
Run Code Online (Sandbox Code Playgroud)
这是最好的方法吗?还是有另一种方式?