使用Python初始化多维列表遇到的问题详解

 更新时间:2023年11月04日 09:25:38   作者:惊瑟  
这篇文章主要介绍了使用Python初始化多维列表遇到的问题详解,二维列表是将其他列表作为它的元素的列表,前一章介绍了如何使用一个列表来存储线性的元素集合,可以使用列表来存储二维数据,需要的朋友可以参考下

使用Python初始化多维列表遇到的问题

问题

我们知道有两种方式可以初始化一个m*n二维列表:

  • 使用*
m, n = 3, 2
x = [[0] * n] * m
  • 使用for
y = [[0] * 2 for i in range(3)]
print(x)
print(y)

乍一看, 两者得到的结果是相同的:

[[0, 0], [0, 0], [0, 0]]
[[0, 0], [0, 0], [0, 0]]

实则其中有大坑,我们试着修改下x,y:

x[1][1]=2
y[1][1]=2
print(x)
print(y)

得到如下结果:

[[0, 2], [0, 2], [0, 2]]
[[0, 0], [0, 2], [0, 0]]

坑就在这,方法1得到的多维列表,内层列表其实只有一份拷贝,修改一个就等于修改所有,而方法2内部列表都是独立的个体,修改一个并不会传导到另一个:

x = [[0]*2]*3
y = [[0] * 2 for i in range(3)]
print(*[id(i) for i in x])
print(*[id(i) for i in y])

输出:

2128813329536 2128813329536 2128813329536
2128813351680 2128813351616 2128813351488

结论

为了避免令人迷惑的结果出现, 初始化多维列表时尽量使用:

[[0]*n for i in range(m)]

到此这篇关于使用Python初始化多维列表遇到的问题详解的文章就介绍到这了,更多相关Python初始化多维列表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Python中sorted()和sort()的使用与区别

    详解Python中sorted()和sort()的使用与区别

    众所周知,在Python中常用的排序函数为sorted()和sort()。本文将详细介绍sorted()和sort()方法的代码示例,并解释两者之间的区别,感兴趣的可以了解一下
    2022-03-03
  • python中将字典转换成其json字符串

    python中将字典转换成其json字符串

    Python的字典和JSON在表现形式上非常相似,其实实际上JSON就是Python字典的字符串表示,但是字典作为一个复杂对象是无法直接转换成定义它的代码的字符串,我们来详细分析下
    2014-07-07
  • opencv设置采集视频分辨率方式

    opencv设置采集视频分辨率方式

    今天小编就为大家分享一篇opencv设置采集视频分辨率方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • django跳转页面传参的实现

    django跳转页面传参的实现

    这篇文章主要介绍了django跳转页面传参的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • python字符串替换示例

    python字符串替换示例

    这篇文章主要介绍了python字符串替换示例,需要的朋友可以参考下
    2014-04-04
  • 深入理解Python爬虫代理池服务

    深入理解Python爬虫代理池服务

    这篇文章主要介绍了Python爬虫代理池服务的相关知识,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-02-02
  • python关于调用函数外的变量实例

    python关于调用函数外的变量实例

    今天小编就为大家分享一篇python关于调用函数外的变量实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • PyQt 图解Qt Designer工具的使用方法

    PyQt 图解Qt Designer工具的使用方法

    这篇文章主要介绍了PyQt 图解Qt Designer工具的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • python pandas 组内排序、单组排序、标号的实例

    python pandas 组内排序、单组排序、标号的实例

    下面小编就为大家分享一篇python pandas 组内排序、单组排序、标号的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python文件和目录操作函数小结

    python文件和目录操作函数小结

    这篇文章主要介绍了python文件和目录操作函数小结,主要涉及到os模块和shutil模块的一些方法,需要的朋友可以参考下
    2014-07-07

最新评论