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)推导出的真实二维列表。 

注意:

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

总结

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

相关文章

  • Pytho树的直径的计算实现

    Pytho树的直径的计算实现

    树的直径是树中任意两个节点之间最长路径的长度,本文主要介绍了Pytho树的直径的计算实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • 简单了解python协程的相关知识

    简单了解python协程的相关知识

    这篇文章主要介绍了简单了解python协程的相关知识,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • python 多进程并行编程 ProcessPoolExecutor的实现

    python 多进程并行编程 ProcessPoolExecutor的实现

    这篇文章主要介绍了python 多进程并行编程 ProcessPoolExecutor的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • 详解Python实现URL监测与即时推送

    详解Python实现URL监测与即时推送

    这篇文章主要为大家介绍了Python实现URL监测与即时推送,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • Pytorch Tensor的索引与切片例子

    Pytorch Tensor的索引与切片例子

    今天小编就为大家分享一篇Pytorch Tensor的索引与切片例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python API 自动化实战详解(纯代码)

    Python API 自动化实战详解(纯代码)

    今天小编就为大家分享一篇Python API 自动化实战详解(纯代码),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • 数据挖掘之Apriori算法详解和Python实现代码分享

    数据挖掘之Apriori算法详解和Python实现代码分享

    这篇文章主要介绍了数据挖掘之Apriori算法详解和Python实现代码分享,本文先是对Apriori算法做了详细介绍,然后给出了Python版实现代码,需要的朋友可以参考下
    2014-11-11
  • flask框架单元测试原理与用法实例分析

    flask框架单元测试原理与用法实例分析

    这篇文章主要介绍了flask框架单元测试原理与用法,结合实例形式较为详细的分析了单元测试的概念、原理及基本用法,需要的朋友可以参考下
    2019-07-07
  • Python入门篇之文件

    Python入门篇之文件

    文件是我们储存信息的地方,我们经常要对文件进行读、写、删除等的操作,在Python中,我们可用Python提供的函数和方法方便地操作文件。文件可以通过调用open或file来打开,open通常比file更通用,因为file几乎都是为面向对象程序设计量身打造
    2014-10-10
  • Python中的二分查找Bisect库使用实战

    Python中的二分查找Bisect库使用实战

    在算法和数据结构中,二分查找是一种高效的搜索算法,可用于有序数据集合的查找,Python的bisect库为我们提供了便捷的二分查找实现,本文将深入探讨Bisect库的使用方法、性能优势,并通过丰富的示例代码展示其在实际应用中的灵活性和效果
    2024-01-01

最新评论