python中xor是什么_Python中的两个列表上的XOR

给定序列seq1和seq2,您可以使用计算

symmetric difference

set(seq1).symmetric_difference(seq2)

例如,

In [19]: set([1,2,5]).symmetric_difference([1,2,9,4,8,9])

Out[19]: {4, 5, 8, 9}

提示:使用较小的列表生成集合通常更快:

In [29]: %timeit set(range(60)).symmetric_difference(range(600))

10000 loops, best of 3: 25.7 µs per loop

In [30]: %timeit set(range(600)).symmetric_difference(range(60))

10000 loops, best of 3: 41.5 µs per loop

您可能想要使用对称差异而不是^(尽管其语法之美)的原因是因为对称差分方法可以将列表作为输入. ^要求两个输入都是集合.将两个列表转换为集合的计算量比最低要求的计算量多一些.

该问题已被标记为this question的副本

然而,这个问题是在不使用集合的情况下寻求解决此问题的方法.

接受的解决方案,

[a for a in list1+list2 if (a not in list1) or (a not in list2)]

如果允许集合,则不建议对两个列表进行异或.首先,它慢了100多倍:

In [93]: list1, list2 = range(600), range(60)

In [94]: %timeit [a for a in list1+list2 if (a not in list1) or (a not in list2)]

100 loops, best of 3: 3.35 ms per loop

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值