Python эквивалент sum() с помощью xor()

Мне нравится функция суммы Python:

>>> z = [1] * 11
>>> zsum = sum(z)
>>> zsum == 11
True

Мне нужна такая же функциональность с использованием xor (^) not add (+). Я хочу использовать карту. Но я не могу понять, как это сделать. Любые подсказки?

Я не удовлетворен этим:

def xor(l):
    r = 0
    for v in l: r ^= v
    return v

Я хочу, чтобы 1 лайнер использовал карту. Подсказки?

Ответ 1

zxor = reduce(lambda a, b: a ^ b, z, 0)

import operator
zxor = reduce(operator.xor, z, 0)

Ответ 2

Обратите внимание, что начиная с Python 3.8 и введением выражений присваивания (PEP 572) (:= оператор), мы можем использовать и обновлять переменную в пределах понимания списка и, таким образом, сокращать список до xor его элементов:

zxor = 0
[zxor := zxor ^ x for x in [1, 0, 1, 0, 1, 0]]
# zxor = 1