python二维数组操作符*的浅拷贝-导致的整列修改
来源:互联网 发布:淘宝美工用什么软件 编辑:程序博客网 时间:2024/06/03 09:38
转载:博客园-geeking
python的二维数组操作
需要在程序中使用二维数组,网上找到一种这样的用法:
1
2
3
4
5
6
创建一个宽度为3,高度为4的数组
[[0,0,0],
[0,0,0],
[0,0,0],
[0,0,0]]
myList = [[0] * 3] * 4
但是当操作myList[0][1] = 1时,发现整个第二列都被赋值,变成
[[0,1,0],
[0,1,0],
[0,1,0],
[0,1,0]]
为什么…一时搞不懂,后面翻阅The Python Standard Library 找到答案
list * n—>n shallow copies of list concatenated, n个list的浅拷贝的连接
例:
1
2
3
4
5
6
lists = [[]] * 3
lists
[[], [], []]
lists[0].append(3)
lists
[[3], [3], [3]]
[[]]是一个含有一个空列表元素的列表,所以[[]]*3表示3个指向这个空列表元素的引用,修改任何
一个元素都会改变整个列表:
所以需要用另外一种方式进行创建多维数组,以免浅拷贝:
1
2
3
4
5
6
lists = [[] for i in range(3)]
lists[0].append(3)
lists[1].append(5)
lists[2].append(7)
lists
[[3], [5], [7]]
之前的二维数组创建方式为:
1
myList = [([0] * 3) for i in range(4)]
- python二维数组操作符*的浅拷贝-导致的整列修改
- python的二维数组操作
- python的二维数组操作
- python的二维数组操作
- python的二维数组操作
- python的二维数组操作
- 二维数组的拷贝
- [转]python的二维数组操作
- python的二维数组定义与操作
- python二维数组上的一些操作
- 整理:python的二维数组操作
- 二维数组的列排序
- 二维数组的列排序
- 二维数组的列排序
- 二维数组的列排序
- 二维数组的列排序
- 二维数组的列排序
- 二维数组的列交换
- [bzoj1509][NOI2003]逃学的小孩 树的直径
- R Manage Data
- 约瑟夫环
- 我们一起来学习CC认证之“安全认证难,到底难在哪里?”
- nano编辑器
- python二维数组操作符*的浅拷贝-导致的整列修改
- xcode9 cocos call to unavailable function system not available on ios
- 使用github创建个人主页及项目主页
- Mybatis-Plus
- app.gradle
- GAN学习指南:从原理入门到制作生成Demo
- java.lang.IllegalMonitorStateException
- 对于org.apache.commons.dbcp.BasicDataSource的配置认知
- 设计模式——外观模式和备忘录模式