搜索

在python中,如何构建矩阵呢,我们一般都想到用列表去实现吧。
于是染念便使用列表的特性快速生成

# 复制
l=[[0]*n]*n

的确生成了
QQ截图20210102125944.png

然而这种方法有种弊端。
我们先了解下*的作用
*用于重复列表,或者说是复制
使用切片获取,每个元素的地址是一样的

但这又不同,
当我们去改变l[0][4]的时候,只有l[1][4]`l2`l[4][4]的元素发生改变,而且地址也发生变化,这4个仍然相同,却与其它元素的地址不同了。
那么为什么要变不全部一起变呢?因为前面说到每个地址都一样呢。

我认为是*的作用,你瞧,最外圈也乘了n,也就是说,这些也要复制,我们的确要改变0,4的值,但是我要复制,再给你复制n-1遍,于是产生了这样的局面。

但如果是[0]*5,虽然创建的元素地址一样,但是改变一个值,其它元素不一样,而上面改变就是因为外圈的✖,造成这样的局面
那么,我们该如何去创建一个矩阵呢?

  1. 有numpy这个包
  2. 但是在比赛中常常都是断网,而且不保证这个包安装了,所以比较推荐大家自己去生成

方法很简单:

[[0 for i in range(col)] for j in range(row)]

QQ截图20210102130148.png

python

版权属于:染念
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
2
查看目录

目录

来自 《由python生成矩阵引发的列表 * 思考》

染念

博主很懒,啥都没有