2017-06-20 44 views
0

要合并两个列表,并丢弃交叉元素将两个列表合并到一个列表中并丢弃重复项。熊猫的Python

A = ['a', 'b', 'c', 'd'] 

B = ['a', 'b', 'd', 'e', 'f'] 

预期结果:

['c', 'e', 'f'] 

我可以得到这个:

[i for i in A if i not in B] + [i for i in B if i not in A] 

但是,有没有更方便方式得到相同的结果没有循环,最好通过熊猫。

问候

+0

请问元素的顺序很重要?如果不是,'list(set(A)^ set(B))'是无与伦比的。使用熊猫来完成这项任务非常昂贵。 – DyZ

+0

@DYZ,真棒,谢谢你!正是我在找的:) –

回答

1

使用装置:

set(A).symmetric_difference(B) 

或等价的:

set(A)^set(B) 

(可以转换回list如果需求是...)

+0

朱利安,非常赞赏你提供的两种方法!它对于我即将完成的任务来说非常方便。请问我该如何计算和比较这两种方法之间的计算时间,还有@DYZ的建议,以及我笨拙的列表理解方法。我尝试过'timeit'模块,但是得到:AttributeError:模块'timeit'没有属性'list'或函数'object has no attribute'list'。再次感谢这个整齐的表达式:D –

+0

我相信这两个完全一样,'^'只是同一个函数的快捷方式符号。 – Julien