如何更改列表元素';python中for循环中的s值?
在使用for循环时,我在更改列表元素的值时遇到了一些问题。下面的代码输出10和5,但我预期是10和10如何更改列表元素';python中for循环中的s值?,python,list,elements,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)
amount = 5
costFieldList = [amount]
for index, field in enumerate(costFieldList):
if type(field) is int:
costFieldList[index] = field*2
print(costFieldList[index])
print(amount)
这是一个范围问题吗?提前感谢。您正在最后打印金额。该值设置为不可变值(5)
如果最后一行是
print(costFieldList)
,您将看到它是[10]
。您使用了“金额”来初始化列表,但没有返回修改金额的链接。您正在打印末尾的“金额”。该值设置为不可变值(5)
如果最后一行是
print(costFieldList)
,您将看到它是[10]
。您使用了“金额”来初始化列表,但没有返回修改金额的链接。您正在打印末尾的“金额”。该值设置为不可变值(5)
如果最后一行是
print(costFieldList)
,您将看到它是[10]
。您使用了“金额”来初始化列表,但没有返回修改金额的链接。您正在打印末尾的“金额”。该值设置为不可变值(5)
如果最后一行是
print(costFieldList)
,您将看到它是[10]
。您使用了amount来初始化列表,但没有返回修改amount的链接。通过写入costFieldList[index]=field*2
,您将创建一个全新的int实例,然后该实例将覆盖对数组中实例的“引用”,而不是值本身。因此,您失去了对金额的原始值的引用
在这个阶段,amount
仍然有一个对5
的“引用”,这就是为什么第二个输出是5。通过编写costFieldList[index]=field*2
,您创建了一个全新的int实例,然后它会覆盖数组中实例的“引用”,而不是值本身。因此,您失去了对金额的原始值的引用
在这个阶段,amount
仍然有一个对5
的“引用”,这就是为什么第二个输出是5。通过编写costFieldList[index]=field*2
,您创建了一个全新的int实例,然后它会覆盖数组中实例的“引用”,而不是值本身。因此,您失去了对金额的原始值的引用
在这个阶段,amount
仍然有一个对5
的“引用”,这就是为什么第二个输出是5。通过编写costFieldList[index]=field*2
,您创建了一个全新的int实例,然后它会覆盖数组中实例的“引用”,而不是值本身。因此,您失去了对金额的原始值的引用
在此阶段,amount
仍然有一个对5
的“引用”,这就是为什么第二个输出是5。如果您想将amount
和成本字段列表[索引]
设置为字段*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])
如果要将金额
和成本字段列表[索引]
设置为字段*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])
如果要将金额
和成本字段列表[索引]
设置为字段*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])
如果要将金额
和成本字段列表[索引]
设置为字段*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])
您正在打印列表元素,而不是列表本身。您已经替换了元素,但旧元素仍在范围内,这就是您正在打印的内容。请尝试打印(costFieldList)
。这是一个范围问题吗。您打印的金额仍然是5。您更改列表中的值5,但这不是您在末尾打印的值基本上,我希望数量现在是其原始值的两倍,以便打印(数量)输出10。我该怎么做呢?不要使用type(field)is int
useisinstance(field,int)
也更新循环中的金额是没有意义的。如果只有一个值,则不需要循环。可以在创建列表之前更改该值。或者,如果列表中有多个值,则应该知道如何更新金额。大多数人看不懂头脑。你打印的是列表元素,而不是列表本身。您已经替换了元素,但旧元素仍在范围内,这就是您正在打印的内容。请尝试打印(costFieldList)
。这是一个范围问题吗。您打印的金额仍然是5。您更改列表中的值5,但这不是您在末尾打印的值基本上,我希望数量现在是其原始值的两倍,以便打印(数量)输出10。我该怎么做呢?不要使用type(field)is int
useisinstance(field,int)
也更新循环中的金额是没有意义的。如果只有一个值,则不需要循环。可以在创建列表之前更改该值。或者,如果列表中有多个值,则应该知道如何更新金额。大多数人看不懂头脑。你打印的是列表元素,而不是列表本身。您已经替换了元素,但旧元素仍在范围内,这就是您正在打印的内容。请尝试打印(costFieldList)
。这是一个范围问题吗。您打印的金额仍然是5。您更改列表中的值5,但这不是您在末尾打印的值基本上,我希望数量现在是其原始值的两倍,以便打印(数量)输出10。我该怎么做呢?不要使用type(field)is int
useisinstance(field,int)
也更新循环中的金额是没有意义的。如果只有一个值,则不需要循环。您可以在创建t之前更改该值