替换列表Python中的所有元素

时间:2018-12-10 18:15:31

标签: python python-3.x list replace

我有这个示例代码,我想用另一个字符串取模10等于0的字符串替换“ m”中的每个字符串。例如,在我的代码中,我想要一个新列表:m = ['0001100001000110100000011011110001101010000010000000011100000001100101', '00011100000001101111']
我的代码哪里有错误?

m = ['1100001000110100000011011110001101010000010000000011100000001100101', '11100000001101111']
for i in m:
        if len(i) % 10 != 0:
             i = ((10 - len(i) % 10) * "0" + i)
             m[i] = i
u = ''.join(chr(int(m[i*10:i*10+10],2)) for i in range(len(m)//10))
print("u= ", u)

1 个答案:

答案 0 :(得分:0)

您应该在代码中包含错误消息,因为从错误消息中应该可以很明显地看到错误消息:

>>> m[i] = i
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers or slices, not str

当您执行for i in m:时,您要遍历m的元素,而不是m的索引。您似乎在大多数方面都意识到了这一点,但是我认为您的命名方案(i通常是一个索引)使您失望。

您可以使用enumerate从可迭代对象中获取(index, value)的元组:

for i, v in enumerate(m):
    if len(v) % 10 != 0:
         v = ((10 - len(v) % 10) * "0" + v)
         m[i] = v
# etc.

如果您的代码逻辑中存在错误,则仍然可能会失败,但这是语法错误!