需要在程序中使用二维数组,网上找到一种这样的用法:

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)]

http://www.cnblogs.com/btchenguang/

python的二维数组操作相关推荐

  1. boost::python模块包装几个 C++ 函数 将二维数组操作为采用 NumPy 数组的 Python 函数作为参数

    boost::python模块包装几个 C++ 函数 将二维数组操作为采用 NumPy 数组的 Python 函数作为参数 实现功能 C++实现代码 实现功能 boost::python模块包装几个 ...

  2. python输入二维数组_Python输入二维数组方法

    Python输入二维数组方法 前不久对于Python输入二维数组有些不解,今日成功尝试,记以备忘.这里以输入1-9,3*3矩阵为例 n=int(input()) line=[[0]*n]*n for ...

  3. python读取二维数组的行列数_Python获取二维数组的行列数的2种方法

    Python获取二维数组的行列数的2种方法 这篇文章主要介绍了Python获取二维数组的行列数的2种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考 ...

  4. C语言 基础60题(2)——二维数组操作

    本篇内容主要是是对二维数组操作,掌握二维数组作为参数传递时,如何用指针表示. 第10题 double  sum_2diagonal(double* array_2d,  unsigned int m, ...

  5. python 构件二维数组_通过这四个构件块来升级您的javascript数组

    python 构件二维数组 Arrays in JavaScript are something special, as they leverage the prototype feature of ...

  6. Python练习——二维数组中每行最大值和每行和

    Python练习--二维数组中每行最大值和每行和 求一个3*3二维数组中每行的最大值和每行的和. 输入格式: 在一行中输入9个小于100的整数,其间各以一个空格间隔 输出格式: 输出3行3列的二维数组 ...

  7. 【python】二维数组按照某行或某列排序(numpy lexsort)

    这里介绍的排序方法主要是针对最后一行和最后一列,如果要指定某一行目前没有很好的方法,有个笨办法可以先把排序的该列(或行)换到最后,排序后再换回来 曾经以为排序只能使用list的sort函数,后来发现a ...

  8. python 对二维数组赋值

    最近做力扣遇到一个问题, obstacleGrid=[[0],[1]]m = len(obstacleGrid) n = len(obstacleGrid[0]) # 需要考虑m=1 n=1dp = ...

  9. python二维数组怎么写_python的二维数组操作

    需要在程序中使用二维数组,网上找到一种这样的用法: #创建一个宽度为3,高度为4的数组 #[[0,0,0], # [0,0,0], # [0,0,0], # [0,0,0]] myList = [[0 ...

最新文章

  1. 14年12月CCF真题1-门禁系统
  2. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组缺口箱图(notch boxplot)实战
  3. MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)...
  4. 机器学习算法基础——线性回归
  5. OpenCV中GPU模块使用
  6. C++细节系列(零):零散记录
  7. charles 安装 ssl_最全面的解决Charles手机抓包的证书问题(步骤非常详细)
  8. 炫酷科技感超前的电子产品发布广告海报psd分层模板,带给你炫酷的未来感
  9. 四针角oled屏连接arduino_和孩子一起做个显示温湿度的oled屏桌面摆件[青创小电视]...
  10. 关于Java的this关键字
  11. centOS安装telnet(在线和rpm包安装)
  12. java8 stream中 forEach和 forEachOrdered 当parallel时候执行过程安全问题深入理解
  13. 操作系统的位数决定寻址空间
  14. 从韩国的大数据之殇,看技术的产业价值与功能价值
  15. 笔记本电脑摄像头无故不能使用的问题解决方法
  16. STM32 ESP8266 无线模块使用
  17. 用微博图片反查上传者信息
  18. 【市场调查与预测】廊坊师范学院大学生洗发水使用情况调查(课程论文)
  19. 机器学习在信息安全领域的应用现状和畅想
  20. pytorch报错:PicklingError: Can’t pickle <function at 0x000001EA6923EAF0>: attribute lookup on main fai

热门文章

  1. 可能没有很好的重工业转型的case
  2. important meeting with friends
  3. Python数据类型(列表和元组)
  4. Vant 1.6.11 发布,有赞轻量级移动端 Vue 组件库
  5. Mac本地生成SSHKey的方法
  6. linux 中shift的用法介绍
  7. springboot(七):springboot+mybatis多数据源最简解决方案
  8. c++stack容器介绍
  9. 【腾讯Bugly干货分享】H5 视频直播那些事
  10. poj 1979 Red and Black(BFS)