gpt4 book ai didi

python - 在 python 列表迭代期间临时创建的?

转载 作者:太空狗 更新时间:2023-10-30 00:46:19 25 4
gpt4 key购买 nike

我想了解为什么会发生以下情况。我的猜测是在列表迭代期间正在创建临时文件,但希望一些专家确认这一点:

def test():
a=[set([1,2,3]),set([3,4,5])]
x=set([1,4])
for i in a:
# doesn't actually modify list contents, making a copy of list elements in i?
i=i.difference(x)
print a
for idx,i in enumerate(a):
i=i.difference(x)
print id(i),id(a[idx])
# obviously this modifies the contents
a[idx]=i
print a

输出:

[set([1, 2, 3]), set([3, 4, 5])]
59672976 59672616
59672616 59672736
[set([2, 3]), set([3, 5])]

此外,我想了解为什么第二次迭代中 i 的“id”与 a[0] 的“id”相同。

最佳答案

它有助于以图形方式查看此问题,因为它基本上是一个指针问题。

for i in a 迭代地将 i 分配给 a 中的每个元素。

iteration

i = i.difference(x) 创建 new object并将 i 分配给它。

assignment

关于python - 在 python 列表迭代期间临时创建的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9807524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com