尝试通过列表理解,映射或for循环实现功能

问题描述

我是python的新手,并且我一直在尝试实现一个将格雷代码转换为二进制代码功能,如图所示。 pseudocode。我尝试用列表理解来做到这一点:

g = [''.join(choice('01') for _ in range(li)) for _ in range(nvar)]

b = [[g[j][i] if i == 0 else b[j][i-1] ^ int(g[j][i],2) for i in range(li)] for j in range(nvar)]

有地图:

b = list((map((lambda b: b[0][0] = g[0][0] if i == 0 else b[0][i] = int(b[0][i - 1],2) ^ int(g[0][i],2) for i in range(li)),g)))

还有一个for循环:

def grayToBinary(g,nvar,li):
b = []
for i in range(0,nvar):
    #b[i][0] = g[i][0]
    b[i][0].append(g[i][0])
    for j in range(1,li):
        b[i][j].append(int(b[i][j-1],2) ^ int(g[i][j],2))
return b

我知道这些都是错误的,但是我找不到正确的答案。可以使用列表理解或映射来完成此操作吗?

预先感谢

解决方法

我认为这是您想要实现的目标:

Education

输出看起来像这样:

ID
,

使用keidakida的示例:

>>> [*itertools.accumulate([0,1,1],operator.xor)]
[0,0]