@Joan,您的方法似乎是正确的。您可以使用列表理解一次按照您的建议进行操作:
>>> s = "1,2,3 2,3,4 3,4,5 4,5,6 5,6,7 26,117,1212"
>>> ' '.join([','.join([[n,'0'][int(i==1)] for i,n in enumerate(e.split(','))])
... for e in s.split(' ')])
1,0,3 2,0,4 3,0,5 4,0,6 5,0,7 26,0,1212
或者,对于正在运行的i:
>>> print('\n'.join([' '.join([','.join([[n,'0'][int(i==j)]
for j,n in enumerate(e.split(','))]) for e in s.split(' ')])
for i in range(3)]))
0,2,3 0,3,4 0,4,5 0,5,6 0,6,7 0,117,1212
1,0,3 2,0,4 3,0,5 4,0,6 5,0,7 26,0,1212
1,2,0 2,3,0 3,4,0 4,5,0 5,6,0 26,117,0
在任何情况下,s 首先在空格 ('') 处分割,每个生成的片段本身以逗号 (,) 分割,这样我们就可以遍历片段的单个元素,旁边是运行整数 [enumerate(seq)],我们用它测试每个元素是否是其片段的第 ith 项,在这种情况下,我们用 0 覆盖它。然后,通过使用join([...]) 函数重新插入相应的分隔符,我们将通过执行所有这些操作获得的嵌套列表自下而上重新组合成原始输入字符串格式。