gpt4 book ai didi

Python:追加原始对象与追加对象的副本

转载 作者:太空宇宙 更新时间:2023-11-03 11:20:25 24 4
gpt4 key购买 nike

<分区>

首先,如果这个问题非常基础,我很抱歉,我只是从 Python 开始。

我在理解 Python 3.6 如何创建对象并将对象 append 到列表时遇到问题。见以下代码:

a_dict=dict()
a_list=list()

for i in range(100):
a_dict['original'] = i
a_dict['multi'] = i*2
a_list.append(a_dict)

打印出来的列表是这样的

print(a_list)
>>[{'original': 99, 'multi': 198}{'original': 99, 'multi': 198}...{'original': 99, 'multi': 198}]

按照我原来的思路,i=0 -> original=0, multi=0; i=1 -> original=1, multi=2;等等……

但是,根据这个问题here , Python 的 append() append 一个指向对象的指针而不是实际值。所以我将原始代码上的 append(original) 更改为 append(copy):

a_dict=dict()
a_list=list()

for i in range(100):
a_dict['original'] = i
a_dict['multi'] = i*2
a_list.append(a_dict.copy()) ##change here

现在,我得到了想要的结果:

print(a_list)
[{'original': 0, 'multi': 0}, {'original': 1, 'multi': 2}, {'original': 2, 'multi': 4},...]

现在,这是我的问题:

append() 是如何工作的?列表是否总是包含指向其原始对象的类似指针的对象?其他类型呢?如果我的意图不是直接弄乱原始值或我正在使用的列表/容器,我是否应该始终使用 copy()?

希望我对自己的解释足够好。如果这是一个基本问题,再次抱歉。谢谢。

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