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就没有错误了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,646评论 1 118
  • 一、python 变量和数据类型 1.整数 Python可以处理任意大小的整数,当然包括负整数,在Python程序...
    绩重KF阅读 1,798评论 0 1
  • 最近在慕课网学习廖雪峰老师的Python进阶课程,做笔记总结一下重点。 基本变量及其类型 变量 在Python中,...
    victorsungo阅读 1,768评论 0 5
  • 无法阻挡已经发生的事,要接受
    胡为计划阅读 123评论 0 0
  • 《深刻》 刚刚在电梯间看见一小孩儿在吃雪糕,出于关心,顺口告诉他:“这么凉的天,会吃坏身体的!”。 小孩告诉我,他...
    小谈石泉阅读 336评论 0 1