我已经完成了以下片段,一个列表,我逐行进行并用逗号替换了点,但最后列表保持不变,因为只有行变量发生变化。如何使用替换值更新列表?
for line in mylist:
line=line.replace('.',',')
line=line.replace('a','b')
我正在寻找一种快速的pythonic解决方案,而不是使用第二个列表来保存替换值。如果可能的话,我只想使用一个列表,并在旅途中“更新”它。
我在for
中有多个操作,例如以上面编辑的方式,使得从for的列表更新不可能像通常所做的那样“1个班轮”。如果可能的话,我正在寻找其他方式来更新它。
答案 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)