Python的list乘法【巨坑】

模式识别要求写混合属性相异性矩阵的算法,我用python语言来写的。

里面二元矩阵的初始化我直接用的list的乘法,看起来没什么问题。。初始化完是d = [[0,0,0],[0,0,0],[0,0,0]]

但是判断l[0]和l[1]不同之后,除了d[1][0]之外,d[0][0]和d[2][0]都变成了1!


*操作符在实现上是复制了值的引用,而不是创建了新的对象。所以list的三个item指向的是同一个地址!

*操作符对于不可变对象是安全的,对于可变对象要小心。

而python里list是可变对象,tuple是不可变对象。

将上述初始化声明换成以下就ok了



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

推荐阅读更多精彩内容

  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,616评论 1 118
  • Python 是一种相当高级的语言,通过 Python 解释器把符合语法的程序代码转换成 CPU 能够执行的机器码...
    Python程序媛阅读 1,941评论 0 3
  • 个人笔记,方便自己查阅使用 Py.LangSpec.Contents Refs Built-in Closure ...
    freenik阅读 67,750评论 0 5
  • 最近在慕课网学习廖雪峰老师的Python进阶课程,做笔记总结一下重点。 基本变量及其类型 变量 在Python中,...
    victorsungo阅读 1,734评论 0 5
  • 首先要安装node v5.x.x或者更高版本 和 npm 3.x.x以上版本可以在https://nodej...
    this_smile阅读 236评论 2 2