00:00
关于数组这部分内容呢,我们还要追加一个内容,那就是多维数组啊,因为我们在日常应用的过程当中,经常会需要去处理一些二维的图形啊,或者说一个矩阵,它其实都需要考虑两个维度,那这个时候如果我们直接使用一个数组去保存所有的数据元素的话,显然就不够用了,这个时候最简单的方式当然就是定义一个二维数组去做处理。那接下来我们在代码里边可以做一个。二维数组的测试同样还是创建一个GALA的OBJECT403,现在我们测试的是多维数组multiply,没方法写出来啊。首先我们来看,你看怎么样去创建一个二位数组。那这个创建过程也是非常的简单,只不过需要要盗用一下锐下边的一个方法,叫做这个方法。
01:13
我们可以点进去看一下啊,相对来讲比较特殊,我们可以传入很多个参数,这里可以最简单的一种调用,就是直接传入一个参数,传入一个参数干了一件什么事呢?就是直接啊拗了一个A瑞,然后把这个参数作为一个当前的维度,当前的大小传了进去啊,所以这就是我们所说的一维数组嘛啊,所以如果只传一个参数就是一维数组,那如果传两个参数呢,那就是二维数组了。大家看到下面这是怎么做的呢?首先这里边拗了一个array,这个array是一个。大家看到这是一个arra类型的array数组的数组,这不就是二维数组吗?啊,所以下面做操作的时候,当然也就是一个for循环,然后不停的去创建里边每一个数组,然后合并起来呢,又得到了一个新的数组,这就是一个二维数组。
02:10
当然下面还有定义啊,有三维数组,四维数组最多,大家看到这里有五位数组。N11直到N5,那这里边没有更高维的具体实现了,因为呃,一般我们想要处理的这种场景啊,可能不会那么高的维度,如果高到了六维以上的话,呃,那可能也不是一般的这种算法或者思维能够去理解的东西了啊,那代码的可能性肯定就很差了,所以这里边最高就到五维啊,那接下来我们创建二维数组的话,那就非常简单了,这里边看到A,这里边其实也可以直接去指定当前的泛型啊,所以我们干脆直接指定in类型,然后里边有两个。两个参数,比方说二,三就表示相当于。
03:04
两行三列的一个二维数组啊,这里我们可以直接定出来啊,比方说就叫做A啊它的类型。那就是一个int类型的数组的数组。这就是二维数组的定义啊,那然后当然我们可以直接看看这个二维数组怎么样去访问元素,这个整体来讲跟之前一维数组是差不多的,那首先我们想要访问当前瑞的,比方说我要访问它的第一行的第三个数,最后一个数,哎,那大家自然想到第一行,那不就是瑞零吗?我们整个是呃,是数组的数组嘛,所以每一行就是一个元素,一共有啊,这里我们是一共有两行,那当前其实就是有两个数组构成的一个数组嘛,所以我取二零,这就是第一行嘛,然后第一行本身又是一个数组,调取它的最后一个元素,那不就是取当前它的第二个元素吗。
04:15
所影位置是二的嘛,哎,所以直接拿到就可以了,那同样的啊,这个位置我们也可以直接去做一个更改,那就是直接在后面,等于比方说给一个19啊,那同样我们还可以继续去做一个赋值,方说我们再去给第二行的第一个元素就是一零去赋一个25,这完全是可以的啊,就就是按照我们自己的希望的这种赋值的规律啊,把每一个元素去做一个对应的访问和赋值就可以了,另外还可以做便利啊,这里如果要做变利的话,我们自然想到了,那应该得是一个。也是一个二重循环对吧?哎,有同学可能会想到我这里边能不能直接做一个对应的打印呢,那比方说这里边啊。
05:08
直接print line这个ARRA,现在不是我们可以到这个mix string方法吗?我直接做这样的一个打印可以吗?就是大家想到既然里边它本身是a ray。那你这样尽,尽管逗号分割里边还是A瑞,那打印出来的话,显然还是全都是引用对吧,哎,这两个。两行嘛,所以每一行都是一个数组,打印出来是两个引用,那所以如果要是想要完整的遍历这个AR瑞的话,那我们还是得做一个循环了,既然是两个维度,那我们的循环其实是双重for循环,那对于SKY而言,双重for循环我们可以直接把它写在一行里边,两个循环变量点这个for推导式不就完了吗?啊,一个I。比方说当前的I,那我们就应该是零哦。
06:04
Until RA啊啊,这个大家自然是能够想到的啊,然后另外还有就是诶。那I我们这是行号。建立我们的第一个维度,那J要便利的当然就是0UNTIL。Array。当前瑞I应该就是这个维度对吧?啊,那所以当前的每一个数。对应的都可以做一个输出,我们可以把当前ARRABI行D推个数据直接打印出来。啊,那这里面其实还可以做进一步的一个考虑啊呃,比方说这里边你看到零到A瑞lengths,哎,之前我们说过,这不就相当于是当前a read indices吗?哎,所以我直接把这个copy一下。
07:12
对,直接用ines就可以了,同样后边其实就是。A瑞I点就是这样的一个判断,然后下边如果我们要想做一个更加合理的输出的话,前面是每一个数都换行了,那这里我们应该还要做一个判断,就是如果要是就正常情况下啊,我们是不换行的,放在一行打印输出后边我们可以加一个放T啊,做一个做一个空格,然后如果像我们之前输出九九乘法表一样,如果当前的J已经等于。
08:02
前array I第I行的lengths减一的话,到了最后一个数的话,那这个时候出来就一行就完事了。啊,这样的话我们输可以运行一下,看看现在的效果怎么样,大家看这就是我们输出的结果,如果直接每一个元素都回车换行的话,那就是这样排出来啊,00192500,那如果说我们是按照这种方式直接打印的话,这就是一个非常。容易看清楚的啊,显然显而易见的一个二维数组,两行三列,我们赋值的是第一行的最后一个元素和第二行的第一个元素。这就是当前啊,做这个便利的过程啊呃,那另外就我们这里其实还可以做一个for each的便利,前面我们不是讲过可以调用它的for each方法吗?大家可能会觉得这一个双这个。
09:00
多重循环啊,两个维度,尽管我们可以写在一行里边,还是有点复杂,如果这里边我们可以用for each的话,就会发现其实很简单,因为之前如果要是一维数组的话,我们是不是直接for each print class可以把它打印输出啊,那现在我们变成了二维数组怎么办呢?其实这个也非常的简单,我们当前里边for each不就是要针对每一个元素做处理吗?那当前第一重循环里边啊,这个for each的时候,其实我们要处理的是每一行的数据,所以接下来每一行的数据就相当于是line。我们写成拉姆达表达式,然后接下来不是还要对于它里边的每每一个数据再去做一个print啊,不就是这样的一个表达呀,啊,所以如果说我们能够把它写成这个样子的话啊,那。
10:00
直接就可以把所有的数据啊,当然这个是我们都要to line是全部都要回车换行啊,做一个输出。我们就实现了所有的元素都打印的这样的一个过程啊,那另外这个还可以进一步简写,这个可以简写成什么啊,烂只出现一次,所以可以用下划线代替ray for each,下划线点for each in,所以就可以写成这样啊,甚至大家能想到啊,如果说我们定义的是。定加高维的数组,如果是三维数组,四维数组,五维数组的话,这应该怎么写呢?而且它写出来就是瑞点for each,然后下划线点for each,里边又是下划线点for each是几位数组,我就有几个for each,把这个维度全部遍历出来,然后最后里边printline就完事了。
11:04
啊,所以这样的,呃,这种调用方式啊,就会非常的简洁,看起来会非常的顺畅,代码的可读性也会更强。我们可以看到得到结果都是完全一样的,当然一般情况我们是不推荐大家用更高维度的数组的,比方说你如果要是直接是一个五维甚至这个更高维的数组的话,即使是我们这么简单的for each for each往后面写,可能也容易把人绕晕,根本不知道到底有几重了啊,所以大家只要知道原理就可以了。这是关于。多重多维数组的讲解。
我来说两句