【Day2】[资料结构]-阵列Array

阵列(Array)是一种常见的资料结构,常用来处理相同类型的有序资料,并存放在连续的记忆体空间中。但由於会先宣告固定记忆体空间,容易造成记忆体浪费。

在读取与修改资料时较快速,因为可以透过索引值index快速找到要的资料位置,但在追加或删除资料时较费时间。

可以想像在一条街道上,会有连续的门牌号住户,可以透过这些门牌号去找到你想见的住户,阵列可以透过这样索引的方式快速读取资料。


  • 阵列概观

https://ithelp.ithome.com.tw/upload/images/20210913/20121027rEIXVBDI39.jpg
宣告了一块名为Score的阵列,Index为索引值,可以搭配[ ]符号,Score[1]可以找到值为20的资料。

  • 阵列追加资料的情况

https://ithelp.ithome.com.tw/upload/images/20210913/20121027fkxZCsaSFC.jpg
若要插入的位置已有资料,需先依序将它们移位再插入。

  • 阵列删除资料的情况

https://ithelp.ithome.com.tw/upload/images/20210913/20121027ReSm5SHSCQ.jpg
容易造成记忆体空间的浪费。


多维阵列

  • 二维阵列: 可以视为一种平面,假设下图表格变数为box,取得值的方式变数名称[列索引号, 行索引号],因此box[0][2]所指向的值「17」。
    https://ithelp.ithome.com.tw/upload/images/20210913/20121027phmchOVklx.jpg

  • 三维阵列: 可以视为一种立方体,取得值的方式变数名称[列索引号, 行索引号, 高索引号]。
    https://ithelp.ithome.com.tw/upload/images/20210913/20121027wvDKJusLZf.jpg


JavaScript

//Array

//一维阵列
var a = [1,2,3]
console.log(a[1]) //2

//二维阵列
var b = [[1,2],[3,4],[5,6]]
console.log(b[0][1]) //2

//三维阵列
var c = [[[1,2,3],[4,5,6],[7,8,9]]]
console.log(c[0][1][2]) //6

JavaScript本身就带有Array资料型态,详细使用方法可以参考这篇介绍。


Python

#Array
import numpy as np

#一维阵列
a = np.array([1,2,3])
print(a[2]) #3

#二维阵列
b = np.array([[1,2,3],[4,5,6]])
print(b[0][1]) #2

#三维阵列
c = np.array([[[1,2,3],[4,5,6],[7,8,9]]])
print(c[0][1][2]) #6

NumPy是Python的一个套件,大部分人会使用它来运用Array资料型态,与内建的List相比,List在记忆体中储存的方式有很大的差异。List的每个资料可以是不同的资料型别,因此这些资料在记忆体中的储存位置是很难以预测的。而Array规定每一个资料都必须有相同的资料型别,它们在记忆体上的储存位置会完全排在一起,因此Array的存取速度会比List快。


<<:  予焦啦!检验核心映像档:开机流程、OpenSBI 惯例、ELF 浅谈

>>:  Day 01:入坑 Angular 的前因後果

DAY 16 Main 的内容

上一篇我们实作了 _variable.sass 的内容,那 main.sass 内还要放什麽呢?基本...

[机派X] Day4 - Bash 指令原来如此容易

引言 今天是机派X系列文章的第四天。 昨天介绍了 Bash 的基本概念,大家都熟悉了吗? 本篇将介绍...

Unity自主学习(三十):完美物件移动

那昨天後来自己在玩写好的脚本时,发现了会有逻辑上的错误,导致物件撞墙时,会不断产生抖动,而之後也去U...

Day9:卷积神经网路(Convolutional Neural Networks,CNN)介绍

  卷积神经网路(Convolutional Neural Networks,以下称CNN)在图片和...

[iT铁人赛Day29]练习题(8)

时间过得真快,一转眼就来到做练习题的最後一天,明天要做最後总结 最後一天要来做练习题第八题 第八题要...