首先得知道三点。

1、程序的运行是需要去内存中申请地址的。

2、赋值操作只是对于内存中某一块地址的引用。

3、Python 内置的 id()函数。 该函数从概念上可以理解为得到当前生命下的内存地址。

id(object)

Return the “identity” of an object. This is an integer which is guaranteed to be unique and constant for this object during its lifetime. Two objects with non-overlapping lifetimes may have the same id() value.

CPython implementation detail: This is the address of the object in memory.

由此我们可以得到以下结果:

a = 1

b = 1

c = a

d = b

print(id(1)) # value x

print(id(a)) # value x

print(id(b)) # value x

print(id(c)) # value x

print(id(d)) # value x

print(id(1) == id(a) == id(b) == id(c) == id(d)) # True

在此基础上去看 字典/dict :

当声明一个字典 info = {} 的操作时候,该字典就已经在内存中获取了某一块地址。

对该字典进行操作时,如 info['name'] = 'github' 的时候,这个字典依旧是之前所占用的地址。

可通过id 函数跟踪得到以下代码:

info = {}

print(id(info)) # value y

info['name'] = 'github'

print(id(info)) # value y

因此,对于你改进前的代码

pathlist.append(info)添加进去的始终是同一个info,准确的说,始终是同一块地址,而这个info内容在不停的修改。

参考以下代码:

info = {'name': 'github'}

pathlist = [info,]

print(id(info)) # value z

print(id(pathlist[0])) # value z

然后,对于改进后的代码

info = {} 的操作放在了循环内,结果就是每一次循环都申请使用一段新的地址,只不过依旧用info来引用。

可由一下代码对比:

info = {}

print(id(info)) # value m

info = {}

print(id(info)) # value n

两次打印的值是不等的。

另外

第一段代码中的

pathlist.append(info) #将dict添加进list中

这个注释,太 多 余 了。

希望能帮到你。

python循环中append_[Python]list.append()在for循环中每次添加的都是最后的一个元素相关推荐

  1. pythonlist循环添加元素_list.append()在for循环中每次添加的都是最后的一个元素汗血宝马...

    先贴出源码吧,这段代码我想返回一个list,list中的元素由N个dict组成, dict中会包含目录下文件的名称,大小和最后修改时间(ps.大小和最后修改时间没有贴出来) 1 2 3 4 5 6 7 ...

  2. PHP for循环中的sql语句,php – 在foreach循环中使用SQL结果

    我觉得我错过了一些愚蠢明显的东西,我试图获得SQL查询的结果,然后在循环中使用它们.我觉得我错过了一些愚蠢明显的东西,我已经尝试过,有没有注释掉的线. $sentToID = $_SESSION['u ...

  3. python循环中的else_python 循环中else的简单示例

    导读热词对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! 众多语言中都有if else这对条件选择组合,但是在python中还有更多else使用的地 ...

  4. python(循环中的else) --总结有点多

    1.循环中的else for...else... while...esle... 如果循环正常结束,则执行else中的代码,如果循环异常结束,不执行else中的代码 break 可以打破循环造成循环异 ...

  5. [转载] python循环中break、continue 、exit() 、pass的区别

    参考链接: Python中的循环和控制语句(continue, break and pass) 1.break:跳出循环,不再执行 用在while和for循环中 用来终止循环语句,即循环条件没有Fal ...

  6. Python坑:bool是int的子类、列表循环中的变量泄露、lambda在闭包中会保存局部变量、重用全局变量

    bool是int的子类 a = True print isinstance(a, int) print True == 1 print False == 0 运行结果: True True True ...

  7. python 遍历两个列表_python 如何在一个for循环中遍历两个列表

    利用python自带的zip函数可同时对两个列表进行遍历,代码如下: >>> list1 = ['a', 'b', 'c', 'd'] >>> list2 = [' ...

  8. python中continue语句的作用_python 循环中的continue 与 break

    python 循环中的continue 与 break continue和break只能在循环中使用,他们以各自的方式让循环更加灵活 1. continue coninue的中文翻译是继续,在循环体里 ...

  9. Python基础第一周--Python语言家族

    在这里插入图片描述 一.Python语言家族 1 Introduction 1.1 Python 简介 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. 简单来说,Pyt ...

最新文章

  1. SQL server2000安装时被挂起的问题
  2. Distributed TensorFlow
  3. 【收藏】Maven 生成打包可执行jar包
  4. python3程序设计基础刘德山答案_Python 3 程序设计学习指导与习题解答
  5. matlab/ansys协同的一个例子
  6. 移动互联网时代,你的个人信息正通过这12种方式泄露
  7. 关于在自己的程序中使用其它窗口的菜单
  8. 网络编程 - 实现文件传送
  9. 计算机采用二进制码的优点
  10. 菜鸟入门:电脑常用的9个小知识点
  11. java读取邮件超大附件_javamail在收邮件时可以得到邮件大小,但是javamail在发邮件时怎么得到邮件大小?...
  12. 基础训练—龟兔赛跑预测(  话说这个世界上有各种各样的兔子和乌龟,但是研究发现,所有的兔子和乌龟都有一个共同的特点——喜欢赛跑。于是世界上各个角落都不断在发生着乌龟和兔子的比赛,小华对此很感兴趣,于)
  13. 青岛大学的计算机专业考研分数线,青岛大学考研分数线
  14. nginx的安装和配置
  15. 直接从Google Play下载apk(附源码)
  16. CASIA-FASD活体检测库,MSU-MFSD库和NUAA库
  17. Android应用开发实战-保活组件
  18. 代码防御性编程的十条技巧
  19. ffmpeg+nginx+dash调用摄像头直播
  20. 独家!天才少年 Vitalik:“中国开发者应多关注以太坊!”

热门文章

  1. Redis 一主三从 哨兵
  2. 【模板】割点(割顶)
  3. 深度操作系统 15 Beta——每一处都在“靓”变
  4. char,TCHAR,WCHAR区别
  5. Tensorflow--Debug
  6. 阿里云 Ubuntu16.04 部署 LAMP
  7. Java程序员的日常—— Arrays工具类的使用
  8. Jan 09 - Number of 1 Bits; Bit Operation;
  9. XTUOJ 1206 Dormitory's Elevator
  10. C语言(九)C语言概述