请问这个是python的BUG吗?

2011-04-25 19:14:44 +08:00
 Weakdancer
# -*- coding: utf-8 -*-
globalChar=[['0','0']]*2
print 'globalChar',globalChar
globalChar[1][1]='1'#使左
print 'globalChar',globalChar

得到的输出:

globalChar [['0', '0'], ['0', '0']]
globalChar [['0', '1'], ['0', '1']]

globalChar=[['0','0'],['0','0']]
print 'globalChar',globalChar
globalChar[1][1]='1'#使左
print 'globalChar',globalChar

globalChar [['0', '0'], ['0', '0']]
globalChar [['0', '0'], ['0', '1']]

如果不算BUG的话这也是一个过于隐晦的用法吧,耽误了我不少时间。
4854 次点击
所在节点    Python
2 条回复
miukal
2011-04-25 19:31:10 +08:00
不是bug。
[['0','0']]*2这个操作其实是把['0','0']的两个引用塞进了一个List里
ayanamist
2011-04-25 19:33:42 +08:00
不是BUG,是你自己没有理解list和dict这两个可变类型在Python中的特点。自己仔细去看手册。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/12108

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX