马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- >>> c=[['z']*12]*8
- >>> c[0]
- ['z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']
- >>> c[0][1]='我会出现在哪?'
- >>> c
- [['z', '我会出现在哪?', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', '我会出现在哪?', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', '我会出现在哪?', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', '我会出现在哪?', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', '我会出现在哪?', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', '我会出现在哪?', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', '我会出现在哪?', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', '我会出现在哪?', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']]
- >>>
复制代码
请问为什么我要对c列表中第0个小列表中的第1个元素进行赋值,而c列表中所有小列表的第1个元素都发生了更改?
如何修改代码才能只对c列表中第0个小列表中的第1个元素进行赋值?
问题出在c=[['z']*12]*8
这样每个['z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']都指向同一地址,即c[0],c[1]....改变其一其他都会跟着改变。
这样写,就不会出现此现象了。
- c=[['z']*12]*8
- c = [['z' for i in range(12)] for j in range(8)]
- c[0][1]='我会出现在哪?'
复制代码- >>> c
- [['z', '我会出现在哪?', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z'], ['z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']]
复制代码
|