我喜欢Python sum函数:
>>> z = [1] * 11
>>> zsum = sum(z)
>>> zsum == 11
True
我希望使用xor(^)而不是添加(+)具有相同的功能。我想用地图。但我无法弄清楚如何做到这一点。任何提示?
我对此不满意:
def xor(l):
r = 0
for v in l: r ^= v
return v
我想使用地图1班轮。提示?
答案 0 :(得分:22)
zxor = reduce(lambda a, b: a ^ b, z, 0)
import operator
zxor = reduce(operator.xor, z, 0)
答案 1 :(得分:0)
请注意,从Python 3.8
开始并引入assignment expressions (PEP 572)(:=
运算符),我们可以在列表推导中使用和更新变量,从而将列表缩小为xor其元素:
zxor = 0
[zxor := zxor ^ x for x in [1, 0, 1, 0, 1, 0]]
# zxor = 1