新手对python列表赋值问题的不解,python列表赋值不解,#coding:utf-
新手对python列表赋值问题的不解,python列表赋值不解,#coding:utf-
#coding:utf-8import randomclass SymMat(object): def __init__(self, length=4): self.length = length self.matrix = [[0]*length]*length values = range(length*2) v = random.sample(values, length) pprint(self.matrix) print '------------before' self.matrix[1][0:] = v pprint(self.matrix)def pprint(l): for i in l: print ism = SymMat(5)
输出:
[0, 0, 0, 0, 0][0, 0, 0, 0, 0][0, 0, 0, 0, 0][0, 0, 0, 0, 0][0, 0, 0, 0, 0]------------before[7, 9, 4, 3, 5][7, 9, 4, 3, 5][7, 9, 4, 3, 5][7, 9, 4, 3, 5][7, 9, 4, 3, 5]
仅对列表中第一行赋值,应该仅仅改变一行的,百思不解! 问题已解决,* 赋值的时候是直接引用过去的,n个列表id相等~~
推荐一个东西,虽然1L已经说的非常清楚了,不过再次遇到问题的时候可以试试http://www.pythontutor.com/visualize.html
对你的代码不是特别的懂,如果要只修改第一行的值,self.matrix[1][0:]这里为什么会是1,要知道self.matrix[1]代表第二行。如果你要实现只对第一行赋值可以直接写self.matrix[0] = v就可以了。
这种问题好多人都遇到,懒得再说一遍了,看链接: https://groups.google.com/d/msg/python-cn/CDV1D7vdq6E/0EO9kjVU4dcJ
编橙之家文章,
相关内容
- python语言中两个不同模块可以互相导入吗?,python语言
- python 钩子如何实现分析流程操作,python钩子,在一个项
- Python多线程进度条progressbar没能达到预期,pythonprogres
- Python文件操作路径错误WindowsError: [Error 32]是什么意思,
- python为excel单元格填充颜色有方法吗?,pythonexcel,使用
- 高手聊聊Cython开发GIL限制以及内存管理的建议,cython
- 请问VIM omni+neocomplcache补全顶部信息帮助如何关闭?,v
- Python join多线程意义何在,pythonjoin,import threa
- python有支持内存保存SQL查询依然可用的功能吗,python
- Python xlwt写入单元格并合并单元格操作问题,pythonxlwt
评论关闭