Предполагая, что вы хотите xor соответствующих элементов из a
и d
, и оба входа и выхода должны быть в виде строк, вы можете сделать это:
c = [bin(int(A, 2) ^ int(D, 2))[2:] for A, D in zip(a, d)]
# ['110000011', '1010001010',
# '101010110', '1100011110',
# '1000111000', '10110110',
# '101010010', '1110001101',
# '1000011111', '111000011',
# '110100010', '1010010010',
# '1010001000', '1110110001']
Преобразует оба A
(от a
) и D
(от d
) до целых чисел, выполняет побитовое xor
, затем преобразует их обратно в двоичную строку, используя bin()
, и, наконец, обрезает предыдущий '0b'
простымslice.
Если вы хотите, чтобы все они были одинаковой длины (те 10 символов, с которых вы начали), вы можете взять эту результирующую строку и выровнять ее по правому краю, заполнив неиспользуемое пространство начальными нулями:
c = [bin(int(A, 2) ^ int(D, 2))[2:].rjust(10, '0') for A, D in zip(a, d)]
# ['0110000011', '1010001010',
# '0101010110', '1100011110',
# '1000111000', '0010110110',
# '0101010010', '1110001101',
# '1000011111', '0111000011',
# '0110100010', '1010010010',
# '1010001000', '1110110001']