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

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

的确生成了 Image

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

但这又不同, 当我们去改变l[0][4]的时候,只有l[1][4]``l[2][4]``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)]

Image