Air*_*nix 8 python pointers copy list append
首先,对不起,如果这个问题非常基本,我只是从 Python 开始。
我在理解 Python 3.6 如何创建对象并将其附加到列表时遇到问题。请参阅以下代码:
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)
Run Code Online (Sandbox Code Playgroud)
列表的打印如下
print(a_list)
>>[{'original': 99, 'multi': 198}{'original': 99, 'multi': 198}...{'original': 99, 'multi': 198}]
Run Code Online (Sandbox Code Playgroud)
按照我原来的想法,i=0 -> original=0, multi=0; i=1 -> 原始=1,多=2;等等...
但是,根据这里的这个问题,Python 的 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
Run Code Online (Sandbox Code Playgroud)
现在,我得到了想要的结果:
print(a_list)
[{'original': 0, 'multi': 0}, {'original': 1, 'multi': 2}, {'original': 2, 'multi': 4},...]
Run Code Online (Sandbox Code Playgroud)
现在,这是我的问题:
append() 如何真正起作用?是否总是列表包含指向其原始对象的类似指针的对象?其他类型呢?如果我的意图不是直接弄乱原始值或我正在使用的列表/容器,我应该总是使用 copy() 吗?
希望我能很好地解释自己。如果这是一个基本问题,再次抱歉。谢谢。
| 归档时间: |
|
| 查看次数: |
20494 次 |
| 最近记录: |