Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 替换for循环中的列表元素_Python_List - Fatal编程技术网

Python 替换for循环中的列表元素

Python 替换for循环中的列表元素,python,list,Python,List,一分钟以来,我一直在尝试替换函数内for循环中的列表元素。我的目标是:收到一封信,一封新信和一条信息。。。找到旧字母在邮件中的位置,在“邮件”中列出旧字母位置的新列表(letter1_list),然后浏览邮件并用新字母替换旧列表元素。下面是我认为的问题所在,除了列表中没有保留更改的值外,其他一切似乎都正常 for i in range(len(letter1_List)): s = list(message) s[letter1_List[messageloc]]

一分钟以来,我一直在尝试替换函数内for循环中的列表元素。我的目标是:收到一封信,一封新信和一条信息。。。找到旧字母在邮件中的位置,在“邮件”中列出旧字母位置的新列表(letter1_list),然后浏览邮件并用新字母替换旧列表元素。下面是我认为的问题所在,除了列表中没有保留更改的值外,其他一切似乎都正常

        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)