- 前言
- 一、np数组与list列表的区分
- 二、列表用乘号复制是浅拷贝
- 总结
前言
初学python遇到了一些奇奇怪怪的问题,由于时间关系没能读完python bif 的底层实现代码,很多问题看起来非常难以理解。本文收纳了我自学python以及实验室项目开发过程中遇到的问题,并对解决办法进行记录整理,仅供自己参考。
一、np数组与list列表的区分 numpy.array和python内置的list都是数据处理中常用的两种结构。由于它们长得实在是太过相似,我经常将他俩弄混。
例如:
这里出现报错的原因是因为我将二维列表list[ [ ] ] 当作np数组,通过[x, y]的方法进行索引,把一个数赋值给了一个二维列表[[ ]]。
对np.array索引用 nparray[x,y]
对二维list索引要用 list[ x ][ y ]
通过列表乘法复制:
list2D = [ [0,1,2,3] ]*4
得到的拓展四倍后的新列表是对第一个元素的浅拷贝,所以当出现上图中对其中某个项进行赋值后,可以看到,全部的列表都跟随改变了。
需要注意的是:
在numpy.array中使用乘号进行拷贝是深拷贝,每项可以单独赋值,不会引起拷贝的其他元素跟随改变。
例如这里的代码,虽然也是使用了乘法复制,但是实现的功能是深拷贝
总结
这里记录了我自学python过程中的种种错误,以此提醒自己多看多学多思考。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)