Python 替换for循环中的列表元素
一分钟以来,我一直在尝试替换函数内for循环中的列表元素。我的目标是:收到一封信,一封新信和一条信息。。。找到旧字母在邮件中的位置,在“邮件”中列出旧字母位置的新列表(letter1_list),然后浏览邮件并用新字母替换旧列表元素。下面是我认为的问题所在,除了列表中没有保留更改的值外,其他一切似乎都正常Python 替换for循环中的列表元素,python,list,Python,List,一分钟以来,我一直在尝试替换函数内for循环中的列表元素。我的目标是:收到一封信,一封新信和一条信息。。。找到旧字母在邮件中的位置,在“邮件”中列出旧字母位置的新列表(letter1_list),然后浏览邮件并用新字母替换旧列表元素。下面是我认为的问题所在,除了列表中没有保留更改的值外,其他一切似乎都正常 for i in range(len(letter1_List)): s = list(message) s[letter1_List[messageloc]]
for i in range(len(letter1_List)):
s = list(message)
s[letter1_List[messageloc]] = letter2
messageloc += 1
print(letter1_List)
print(s)
如您所见,只有最后一个字母被替换
完整代码
def swap(letter1, letter2, message):
messageloc = 0
letter1_List = []
letter2_List = []
for i in range(len(message)):
if letter1 == message[messageloc]:
letter1_List.append(messageloc)
messageloc += 1
messageloc = 0
for i in range(len(message)):
if letter2 == message[messageloc]:
letter2_List.append(messageloc)
messageloc += 1
messageloc = 0
for i in range(len(letter1_List)):
s = list(message)
s[letter1_List[messageloc]] = letter2
messageloc += 1
print(letter1_List)
print(s)
此解决方案没有语法错误,但它不会返回编辑过的“消息”,只会在for循环之前更改消息的最后一个字母Put
s=list(message)
,否则您将继续使用原始消息覆盖它(上一次迭代除外)。非常感谢,解决了我的问题
def swap(letter1, letter2, message):
messageloc = 0
letter1_List = []
letter2_List = []
for i in range(len(message)):
if letter1 == message[messageloc]:
letter1_List.append(messageloc)
messageloc += 1
messageloc = 0
for i in range(len(message)):
if letter2 == message[messageloc]:
letter2_List.append(messageloc)
messageloc += 1
messageloc = 0
for i in range(len(letter1_List)):
s = list(message)
s[letter1_List[messageloc]] = letter2
messageloc += 1
print(letter1_List)
print(s)