list append总是最后一个元素

写了一段代码

ranges=dict = {"x" : 1236, "y" : 234, "z" : 2345}
list=[]
a={}
for item in ranges:
  a = item
  list.append(a)
print(list)

发现list全部变成了最后一个元素

原因在于

dict是可变变量,当在循环外创建dict时,申请了一块地址

而当list.append时,append的是引用了当前的这块内存

每次循环,我们都对内存中的数值进行了改变,

list的每个元素都会改变,因为他们引用了同一个地址

所以我们把代码改成这样

ranges=dict = {"x" : 1236, "y" : 234, "z" : 2345}
list=[]
for item in ranges:
  a={}
  a = item
  list.append(a)
print(list)

这样每次循环,a都去申请一块新内存地址
这样生成的list就没有错误了

你可能感兴趣的:(list append总是最后一个元素)