Python 用于循环字符串替换

Python 用于循环字符串替换,python,string,for-loop,replace,Python,String,For Loop,Replace,在for循环中,我尝试覆盖字符串类型变量 item1 = "Item 1" item2 = "Item 2" for item in [item1, item2]: if item == "Item 2": item = "Item 1" print (item1, item2) 打印结果显示“第1项第2项”。应该是“第1项第1项” 我还尝试了item=item.replace(“item 2”,“item 1”)。同样的结果 是什么阻止了“项目2”被替换 更新: 与类

在for循环中,我尝试覆盖字符串类型变量

item1 = "Item 1"
item2 = "Item 2"
for item in [item1, item2]:
    if item == "Item 2":
        item = "Item 1"
print (item1, item2)
打印结果显示
“第1项第2项”
。应该是
“第1项第1项”

我还尝试了
item=item.replace(“item 2”,“item 1”)
。同样的结果

是什么阻止了
“项目2”
被替换

更新:

与类似,但使用字符串,而不是整数


我有一个更长的变量列表要验证和覆盖,因此只使用当前项进行重新分配的for循环是理想的(而不是item2=“item 1”)

您正在分配临时变量
item
,它是在for循环的每次迭代中分配的。因此,基本上,您将
项重新分配给
“项1”
,然后解释器在下一次迭代中将其再次分配给
“项2”
。但是,在任何情况下,都不会通过重新分配此变量来改变原始列表

如果确实希望最后一行打印所需内容,则需要重新分配原始变量:

item1 = "Item 1"
item2 = "Item 2"
for item in [item1, item2]:
    if item == "Item 2":
        item2 = "Item 1"
print (item1, item2)
不过,列出一个变更列表更有意义。这是常见的模式:

old_list = ["Item 1", "Item 2"]
new_list = []
for item in old_list:
    if item == "Item 2":
        new_list.append("Item 1")
    else:
        new_list.append(item)

print new_list

您正在分配临时变量
item
,该变量在for循环的每次迭代中都分配。因此,基本上,您将
项重新分配给
“项1”
,然后解释器在下一次迭代中将其再次分配给
“项2”
。但是,在任何情况下,都不会通过重新分配此变量来改变原始列表

如果确实希望最后一行打印所需内容,则需要重新分配原始变量:

item1 = "Item 1"
item2 = "Item 2"
for item in [item1, item2]:
    if item == "Item 2":
        item2 = "Item 1"
print (item1, item2)
不过,列出一个变更列表更有意义。这是常见的模式:

old_list = ["Item 1", "Item 2"]
new_list = []
for item in old_list:
    if item == "Item 2":
        new_list.append("Item 1")
    else:
        new_list.append(item)

print new_list

顺便说一句,你不能改变链接中详细说明的循环变量的值。我不确定你为什么认为你的循环应该做你认为应该做的事情。你从来没有重新分配过
item1
item2
,那么为什么你会对它们没有更改感到困惑呢?伙计们,这不是“迭代时更改列表”问题的重复。这里的中心点是OP不理解赋值是如何工作的。更准确地说,你被“名称是独立于其他名称重新赋值的”这一事实绊倒了顺便说一句,你不能改变链接中详细说明的循环变量的值。我不确定你为什么认为你的循环应该做你认为应该做的事情。你从来没有重新分配过
item1
item2
,那么为什么你会对它们没有更改感到困惑呢?伙计们,这不是“迭代时更改列表”问题的重复。这里的中心点是OP不理解赋值是如何工作的。更准确地说,你被“名称是独立于其他名称重新赋值的”这一事实绊倒了。这个“地图”有一个内置的,它是一个样式选择,对于这样简单的事情。我个人认为在这里定义一个新函数或者写一个lambda函数就不那么优雅了。如果有什么区别的话,列表理解可能是下一步,但在这个例子中,这甚至是非常奇怪的。这个“地图”有一个内置的,它是一个样式选择,对于这样简单的东西。我个人认为在这里定义一个新函数或者写一个lambda函数就不那么优雅了。如果有什么区别的话,下一步可能是理解列表,但在这个例子中,这也很奇怪。