入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

这里遇到的一个小坑-python中的二维列表

创建时间:2016-12-19 投稿人: 浏览次数:112

缘起于某个同学问了我一个问题(我自己学的话万万不会抠得那么深...)

他的程序是这样的:

listx=[]
graph=[]
for a in range(0,10):
    listx.append(99999)
for b in range(0,10):
    graph.append(listx)

graph[0][0]=0
print graph

他原意是想就给这个二维列表的第一行第一列赋值0 即graph[0][0]=0,然而却出现了以上的结果...
经过一系列的 "怎么会!不可能啊!奇怪...!!!" 后,这个结果的原因是:

他给graph添加的是个元素始终都是listx这个列表,因此,graph所有元素的值都是listx的一个浅复制。他们都指向同一个地址,即listx的内存地址,因此只要改变graph当中一个元素的值,就会影响到其他元素。所以如上例,当将graph第一行第一列的值由9999变为0后,其他行也发生了改变。

下面是修改后的代码:

graph = [[] for i in range(10)]
for a in range(0,10):
    for b in range(0,10):
        graph[a].append(9999)
graph[0][0]=0        
print graph



声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像