使用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初始化多维列表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Jupyter Notebook读入csv文件时出错的解决方案

    Jupyter Notebook读入csv文件时出错的解决方案

    这篇文章主要介绍了Jupyter Notebook读入csv文件时出错的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • python playwright 自动等待和断言详解

    python playwright 自动等待和断言详解

    这篇文章主要为大家介绍了python playwright 自动等待和断言,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • Python去除图片水印实现方法详解

    Python去除图片水印实现方法详解

    这篇文章主要为大家详细介绍了如何利用Python实现处理图片水印的相关资料,主要是实现图片水印的去除效果,感兴趣的小伙伴可以尝试一下
    2023-01-01
  • Pytorch复现扩散模型的示例详解

    Pytorch复现扩散模型的示例详解

    这篇文章主要为大家详细介绍了如何利用Pytorch复现扩散模型,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的可以跟随小编一起了解一下
    2023-04-04
  • python入门:这篇文章带你直接学会python

    python入门:这篇文章带你直接学会python

    本教程并未涵盖Python语言的全部内容,只是一个入门的教程,Python有非常多的库以及很多的功能特点需要学习,小编只是抛砖引玉,希望大家可以从中受益
    2018-09-09
  • 一篇文章带你了解python标准库--random模块

    一篇文章带你了解python标准库--random模块

    这篇文章主要给大家介绍了关于Python中random模块常用方法的使用教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • 将Python项目打包成exe并附带下载功能的操作流程

    将Python项目打包成exe并附带下载功能的操作流程

    这篇文章主要为大家详细介绍了将Python项目打包成exe并附带下载功能的操作流程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以了解下
    2023-12-12
  • Python中的index()方法使用教程

    Python中的index()方法使用教程

    这篇文章主要介绍了Python中的index()方法使用教程,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-05-05
  • 详解解决jupyter不能使用pytorch的问题

    详解解决jupyter不能使用pytorch的问题

    这篇文章主要介绍了详解解决jupyter不能使用pytorch的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • 探索Python函数调用为何加速代码执行原理

    探索Python函数调用为何加速代码执行原理

    Python 作为一种解释型语言,其执行速度相对于编译型语言可能会较慢,然而,在Python中,通常观察到代码在函数中运行得更快的现象,这个现象主要是由于函数调用的内部优化和解释器的工作方式导致的,本文将深入探讨这个现象,并通过详细的示例代码进行解释
    2024-01-01

最新评论