如何在python中的for循环中更改列表元素的值?

时间:2014-06-11 14:57:00

标签: python list elements

在使用for循环时,我在更改列表元素的值时遇到了一些麻烦。以下代码输出10和5 - 但我期待10和10。

amount = 5
costFieldList = [amount]

for index, field in enumerate(costFieldList):
    if type(field) is int:
        costFieldList[index] = field*2
        print(costFieldList[index])
print(amount)

这是范围问题吗?提前谢谢。

3 个答案:

答案 0 :(得分:1)

您最后打印amount。这被设置为不可变值(5)。

如果您的上一行是print(costFieldList),您会看到[10]符合预期。您使用金额初始化列表,但没有链接返回修改金额。

答案 1 :(得分:1)

通过编写costFieldList[index] = field*2,您将创建一个全新的int实例,然后覆盖"引用"到数组中的实例,但不是值本身。因此,您将失去对amount的原始值的引用。

在此阶段,amount仍然有一个"参考"到5这就是为什么你得到5作为第二个输出。

答案 2 :(得分:1)

如果您要同时将amountcostFieldList[index]设置为field * 2,请使用:

amount = 5
costFieldList = [amount]

for index, field in enumerate(costFieldList):
    if isinstance(field,int):  # use issinstance to check if field is an integer
        costFieldList[index] = field * 2
        print(costFieldList)
        amount=costFieldList[index] # set amount to value of costFieldList index 
print(amount,costFieldList ) 
(10, [10])