美文网首页
PS1 Q3关于二维数组赋值的问题

PS1 Q3关于二维数组赋值的问题

作者: Bryant_2423 | 来源:发表于2022-09-25 18:45 被阅读0次

在Q3初始化二维数组后重新赋值出现了以下的问题:

def matrix_gen(m, n):
     a = [0] * n
     matrix = []
     for i in range(m):
         matrix.append(a)
     return matrix

或者在按以下方式初始化数组:

matrix = [[0] * 5] * 3

当在对这个数组重新赋值时,会出现:

In: matrix[0][0] = 1
Out: [[1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0]]

与我们的理想结果

Out: [[1, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

不一致
在python tutor中进行代码可视化,我们可以看到:


我们以下图方式形成数组:


当我们修改数组时,由于list的immutable特性,实际上0~2位指向同一个list,该0位的时候实际上就把1,2位的数组也改了

故会出现这种问题。
我们采用另外一种方式即可:

matrix = [[0] * 5 for _ in range(3)]

在python tutor中:


再次修改数组便不会出现上述问题。

相关文章

  • PS1 Q3关于二维数组赋值的问题

    在Q3初始化二维数组后重新赋值出现了以下的问题: 或者在按以下方式初始化数组: 当在对这个数组重新赋值时,会出现:...

  • vue项目技术点总结(2020.05)

    1 一维数组给二维数组赋值 将一维数组内容按顺序赋值给不规则的二维数组(一维数组的长度与二维数组里的数组长度之和相...

  • 04.C(数组字符串和函数)

    1.水仙花数 2.二维数组 3.二维数组赋值 4.输出二维数组的值 这里存在数组越界的情况,但是c 与 Java不...

  • 二维数组

    Java中的二维数组1.声明数组并分配空间 或者 2.赋值逐个赋值,注意索引从0开始 或者在声明同时赋值 3.处理...

  • 第三章③多维数组

    1.二维数组,可以看成一维数组里放得数组 二维数组的初始化 静态初始化;不用指出数组的长度,直接赋值动态初始化:先...

  • python二维数组重复赋值问题

    今天在写程序时遇到一个怪异的问题,采用双重for循环对一个二维数组中的每一个元素进行赋值,结果发现,它们的每一列都...

  • ES6 概述(2)

    数组的解构和赋值 二维数组 对象定义:一组无序属性的集合 箭头函数 有名函数

  • 笔记:二维数组,字符串,指针

    #mark- 01-二维数组基本概念 //问题:什么是二维数组?二维数组的格式?二维数组如何存储?二维数组是如何遍...

  • 2017.9.15学习总结

    今天上午学习了字符数组,二维数组。 二维数组同数组一样,只有在定义的时候可以连续赋值,之后一次只可以赋一次值。...

  • Go语言数组、切片、映射

    数组 声明和初始化 访问指针数组的元素 相同类型(数组长度和每个数组元素类型相同)的数组变量可以互相赋值。 二维数...

网友评论

      本文标题:PS1 Q3关于二维数组赋值的问题

      本文链接:https://www.haomeiwen.com/subject/fvrxartx.html