Python中的冒号分隔列表如何替换所选元素

时间:2018-01-07 06:06:26

标签: python

借助Replacing selected elements in a list in Python的答案,我有以下测试代码:

newline = [10,10,20,20,30,30,40,40]
def replace_element(newline, new_element, indices):
    for i in indices:
        newline[6] = (newline[6] - 30) * 1.13
    return newline

newline = replace_element(newline, newline[6] , [6])
print(newline)

但是我的rrdtool数据流需要冒号分隔符而不是逗号(即24.73:0.06:264.44:0.61:886.55:2.14:88.91:0.21)所以我得到了

  

TypeError:'str'对象不支持项目分配

我可以在代码中处理此问题,还是需要在replace_element行之后替换逗号?

1 个答案:

答案 0 :(得分:2)

字符串不是真的可变(我认为),但它们有split方法将它们转换为列表:

>>> data = '24.73:0.06:264.44:0.61:886.55:2.14:88.91:0.21'
>>> data.split(':')
['24.73', '0.06', '264.44', '0.61', '886.55', '2.14', '88.91', '0.21']

这是一个字符串列表。也许你希望它们是实际的数字:

>>> data_as_list = list(map(float, data.split(':')))
>>> data_as_list
[24.73, 0.06, 264.44, 0.61, 886.55, 2.14, 88.91, 0.21]

即使你不这样做,你仍然可以分配任何你想要的东西:

>>> data_as_list[6] = 'some other thing'
>>> data_as_list
[24.73, 0.06, 264.44, 0.61, 886.55, 2.14, 'some other thing', 0.21]

然后你可以把它变成一个字符串:

>>> ':'.join(map(str, data_as_list))
'24.73:0.06:264.44:0.61:886.55:2.14:some other thing:0.21'