如何简单地覆盖列表中的元素被替换

时间:2018-03-19 01:44:29

标签: python python-3.x list

我已经完成了以下片段,一个列表,我逐行进行并用逗号替换了点,但最后列表保持不变,因为只有行变量发生变化。如何使用替换值更新列表?

for line in mylist:
   line=line.replace('.',',')
   line=line.replace('a','b')

我正在寻找一种快速的pythonic解决方案,而不是使用第二个列表来保存替换值。如果可能的话,我只想使用一个列表,并在旅途中“更新”它。

我在for中有多个操作,例如以上面编辑的方式,使得从for的列表更新不可能像通常所做的那样“1个班轮”。如果可能的话,我正在寻找其他方式来更新它。

4 个答案:

答案 0 :(得分:2)

尝试:

mylist[:] = [line.replace('.',',').replace('a','b') for line in mylist]

答案 1 :(得分:0)

这一切应该有效:

def do_stuff(elem):
    return ...

for i in range(len(mylist)):
    mylist[i] = do_stuff(mylist[i])

mylist[:] = [do_stuff(line) for line in mylist]

答案 2 :(得分:0)

如果您想避免创建新列表,请按以下步骤操作:

for n, line in enumerate(mylist):
    mylist[n] = line.replace('.',',')

如果列表很长,您可能更喜欢这个。但是如果你可以创建一个新的列表,那么Stephen Rauch的解决方案更像是“Pythonic”。

答案 3 :(得分:0)

另一个解决方案是使用str.translate,如果替换总是一个长度字符。

replace = lambda x: x.translate(str.maketrans('.a', ',b'))
mylist[:] = map(replace, mylist)