1
a=['0011001100',0100011011',
 '0110111001', '1001001010',
 '1010001000', '1001000001',
 '0101001111', '1110010001',
 '0011101111', '0101010100',
 '0010110000', '1011110111',
 '0000011101', '0000011100']
d=['0101001111', '1110010001',
 '0011101111', '0101010100',
 '0010110000', '1011110111',
 '0000011101', '0000011100',
 '1011110000', '0010010111',
 '0100010010', '0001100101',
 '1010010101', '1110101101']
c=a^d

试图在这些数据集之间进行异或运算。任何帮助

4

2 回答 2

2

假设您想对 and 中的相应元素进行异ad,并且输入和输出都应该是字符串,您可以这样做:

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(from a) 和D(from d) 都转换为整数,按位执行xor,然后使用 将它们转换回二进制字符串,最后用一个简单的切片bin()切掉前面的字符串。'0b'

如果您希望它们都具有相同的长度(您开始使用的 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']

于 2019-10-12T18:21:50.707 回答
0

尝试这个

def XOR_func(a, d):
    c = []
    for i in len(a):
        a_list = list(a[i])
        d_list = list(d[i])
        c_list = []
        for j in len(a_list):
           if a_list[j] == "0" and d_list[j] == "0":
                 c_list.append("0")
           if a_list[j] == "0" and d_list[j] == "1":
                 c_list.append("1")
           if a_list[j] == "1" and d_list[j] == "0":
                 c_list.append("1")
           if a_list[j] == "1" and d_list[j] == "1":
                 c_list.append("0")
       c.append(''.join(c_list))
    return c
于 2019-10-12T18:24:19.493 回答