问题描述
我是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]