python将值分配给循环中的列表元素

python将值分配给循环中的列表元素,第1张

python将值分配给循环中的列表元素

首先,您不能重新分配循环变量-可以,但是,这不会更改您要遍历的列表。因此,设置

foo =0
将不会更改列表,而只会更改局部变量
foo
(该变量恰好包含每次迭代开始时的迭代值)。

接下来,小数字(例如

0
和)
1
内部保存在小整数对象的池中(这是CPython实现的细节,不必是这种情况!)这就是为什么在
foo
为其分配ID后,ID相同的原因
0
。id基本上
0
是池中该整数对象的id

如果要在遍历列表时更改列表,很不幸,您将不得不按索引访问元素。因此,如果要保持输出不变,但

[0, 0, 0]
最后要保留输出,则必须遍历索引:

for i in range(len(bar)):    print id(bar[i])    bar[i] = 0    print id(bar[i])print bar

否则,这实际上是不可能的,因为一旦将列表的元素存储在变量中,就会有一个单独的引用,该引用未链接到存储在列表中的元素。并且由于大多数这些对象都是不可变的,并且在为变量分配新值时创建了一个新对象,因此您将无法获取列表的引用进行更新。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5616567.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存