要合并两个列表,并丢弃交叉元素将两个列表合并到一个列表中并丢弃重复项。熊猫的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]
但是,有没有更方便方式得到相同的结果没有循环,最好通过熊猫。
问候
要合并两个列表,并丢弃交叉元素将两个列表合并到一个列表中并丢弃重复项。熊猫的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]
但是,有没有更方便方式得到相同的结果没有循环,最好通过熊猫。
问候
使用装置:
set(A).symmetric_difference(B)
或等价的:
set(A)^set(B)
(可以转换回list
如果需求是...)
朱利安,非常赞赏你提供的两种方法!它对于我即将完成的任务来说非常方便。请问我该如何计算和比较这两种方法之间的计算时间,还有@DYZ的建议,以及我笨拙的列表理解方法。我尝试过'timeit'模块,但是得到:AttributeError:模块'timeit'没有属性'list'或函数'object has no attribute'list'。再次感谢这个整齐的表达式:D –
我相信这两个完全一样,'^'只是同一个函数的快捷方式符号。 – Julien
请问元素的顺序很重要?如果不是,'list(set(A)^ set(B))'是无与伦比的。使用熊猫来完成这项任务非常昂贵。 – DyZ
@DYZ,真棒,谢谢你!正是我在找的:) –