【python列表赋值】这两段代码为什么输出不一样

Y_Groot 2017-09-09 04:54:57
val = [['a']*3]*3
val[0][0]='b'
print val

tmp = [['c','c','c'],['c','c','c'],['c','c','c']]
tmp[0][0]='a'
print tmp


输出结果:
[['b', 'a', 'a'], ['b', 'a', 'a'], ['b', 'a', 'a']]
[['a', 'c', 'c'], ['c', 'c', 'c'], ['c', 'c', 'c']]
...全文
216 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Y_Groot 2017-09-10
  • 打赏
  • 举报
回复

就是这个了
chuifengde 2017-09-09
  • 打赏
  • 举报
回复
secsilm 2017-09-09
  • 打赏
  • 举报
回复
第一种方法是复制了几个对同一对象的引用,他们指向的是同一个对象,所以改变一个的时候就都改了。第二种就不是了。

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧