For循环字符串替换

时间:2017-03-24 15:24:24

标签: 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)

结果显示"Item 1 Item 2"。应该说"Item 1 Item 1"

我也试过item = item.replace("Item 2","Item 1")。结果相同。

什么阻止"Item 2"被替换?

更新

Changing iteration variable inside for loop in Python类似,但是使用字符串,而不是整数。

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

1 个答案:

答案 0 :(得分:4)

您正在重新分配在for循环的每次迭代中分配的临时变量item。所以基本上,你将item重新分配给"Item 1",然后解释器会在下一次迭代时立即重新分配给"Item 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