Python中初始化一个二维数组及注意事项说明

 更新时间:2023年08月18日 08:57:08   作者:cccxxxqq  
这篇文章主要介绍了Python中初始化一个二维数组及注意事项说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Python初始化一个二维数组及注意事项

Python在初始化二维数组的时候还是有一些坑的,主要是要避免可变元素的传递改变问题:

array = [0, 0, 0]
matrix = [array] * 3
matrix[0][0] = 1
print(matrix)
>>>[[1, 0, 0], [1, 0, 0], [1, 0, 0]]

如果用上面这种方式初始化数组,实际上并不是创建了一个新的二维数组,而是创建了三个指向array的引用。

因此,如果改变array的话,这三个就会同步随之改变。

那么如何正确初始化一个二维数组呢?

方法一:

matrix = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
matrix[0][0] = 1
print(matrix)
>>>[[1, 0, 0], [0, 0, 0], [0, 0, 0]]

方法二:(列表推导式)

matrix = [[0 for i in range(3)] for i in range(3)]
matrix[0][0] = 1
print(matrix)
>>>[[1, 0, 0], [0, 0, 0], [0, 0, 0]]

Python二维数组初始化: [[0]*n]*n 与 [[0]*n for i in range(n)]

做题的时候因为初始化成[[0]*n]*n卡了好久,后来才知道这两种方法初始化出来的数组不一样。

用第一种方式初始化,其实是将【0】*n这个列表的索引复制了n遍,改变其中一个,其它的也会跟着改变。

而第二种是通过for i in range(n)推导出的真实二维列表。 

注意:

推荐使用全部用循环或者组合的方式(里面是×,外面循环)的方式。如果都为乘的方式是浅复制,每一行的改变都会改变其他行。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python深入学习之特殊方法与多范式

    Python深入学习之特殊方法与多范式

    这篇文章主要介绍了Python深入学习之特殊方法与多范式,特殊方法就像PHP里的魔术方法,多范式是指可以用面向对象、面向过程、函数式、声明式等方式编写程序,需要的朋友可以参考下
    2014-08-08
  • TensorFlow2.X使用图片制作简单的数据集训练模型

    TensorFlow2.X使用图片制作简单的数据集训练模型

    这篇文章主要介绍了TensorFlow2.X使用图片制作简单的数据集训练模型,本文通过截图实例代码相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • python暴力解压rar加密文件过程详解

    python暴力解压rar加密文件过程详解

    这篇文章主要介绍了python解压rar加密文件过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 操作Windows注册表的简单的Python程序制作教程

    操作Windows注册表的简单的Python程序制作教程

    这篇文章主要介绍了操作Windows注册表的简单的Python程序制作教程,包括远程对注册表进行修改的实现,需要的朋友可以参考下
    2015-04-04
  • 如何利用python脚本自动部署k8s

    如何利用python脚本自动部署k8s

    这篇文章主要介绍了利用python脚本自动部署k8s的方法,本文通过脚本代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • 使用Python实现优雅生成假数据

    使用Python实现优雅生成假数据

    Faker是一个Python包,开源的GITHUB项目,主要用来创建伪数据,这篇文章主要为大家详细介绍了Python如何使用Faker生成假数据,感兴趣的小伙伴可以了解下
    2023-12-12
  • Python多进程通信Queue、Pipe、Value、Array实例

    Python多进程通信Queue、Pipe、Value、Array实例

    这篇文章主要介绍了Python多进程通信Queue、Pipe、Value、Array实例,queue和pipe用来在进程间传递消息、Value + Array 是python中共享内存映射文件的方法,需要的朋友可以参考下
    2014-11-11
  • python3 selenium自动化 下拉框定位的例子

    python3 selenium自动化 下拉框定位的例子

    今天小编就为大家分享一篇python3 selenium自动化 下拉框定位的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • 详解Python3操作Mongodb简明易懂教程

    详解Python3操作Mongodb简明易懂教程

    本篇文章主要介绍了详解Python3操作Mongodb简明易懂教程,详细的介绍了如何连接数据库和对数据库的操作,有需要的可以了解一下。
    2017-05-05
  • 如何用Python实现八数码问题

    如何用Python实现八数码问题

    这篇文章主要给大家介绍了关于如何用Python实现八数码问题的相关资料,八数码问题是一种经典的搜索问题,它的目标是将一个乱序的八数码序列变成一个有序的八数码序列,通常使用 A* 算法来解决,需要的朋友可以参考下
    2023-10-10

最新评论