如何在Python中实现二维数组?

时间:2020-02-23 14:42:09  来源:igfitidea点击:

什么是数组?

因此,在深入研究数组实现之前,首先让我们看一下数组到底是什么!

数组是一个线性数据结构,在顺序存储位置中包含相同类型的元素的有序集合。
因此,数组是一种数据结构,用于将相同类型的元素线性存储在内存中。
在每种编程语言中,数组都表示为Array_name [index]。
索引是指出特定元素在存储位置中的位置号的数字。
由于它使用顺序存储器,因此索引号也是连续的。
很显然要注意,数组索引从0开始,到n-1结束,其中n是数组的大小。

如何在python中定义和使用数组?

因此,我们都知道数组在python中不是作为单独的对象存在的,但是我们可以使用列表对象来定义并将其用作数组。

例如,考虑一个由十个数字组成的数组:A = {1,2,3,4,5}用于声明数组的语法:

array_name=[ ]

如果要使用值对其进行初始化,则可以使用:

array_name = [value1, value2, value3, value n]

要遍历数组,我们使用索引,例如,如果我们想获取值2,则使用

array_name[ location of value 2 starting from 0]

使用列表作为数组的优点

使用列表描述数组有很多优点。
它不仅支持数组的基本操作,而且还具有一些高级操作:

  • 它支持切片。通过切片,我们可以将数组切成任意尺寸。

  • 它支持负索引。现在我们可以使用array_name [-1]来获取最后一个元素,类似地-2给出倒数第二个元素。

  • 它具有内置功能来存储,更新和处理数据。

  • 它可以将双相似的元素存储在一起,并带有重载的+和*运算符。

因此,列表提供了一种实现数组的有力方法。

什么是二维数组,以及如何使用列表对象创建数组?

现在最重要的部分到了。
2维数组。
从机器学习数据帧到矩阵,使用最广泛的数组是2维数组。
基本上将二维数组定义为数组数组。
这听起来可能有点令人困惑,但让我们仅了解其含义。

到目前为止,我们已经看到一个数组,其中保存着[1,2,3,4,5]之类的数据,如果要绘制这些点,则可以将其解释为坐标几何中的线。
如果我说我有5个学科的5名学生的数据,该怎么办:

  • 学生1 = [98,95,92,99,78]

  • 学生2 = [95,85,68,48,45]

  • 学生3 = [98,95,92,99,25]

  • 学生4 = [98、72、58、99、75]

  • 学生5 = [98,95,92,99,48]

现在,我们可以有五个不同的列表来存储此数据,但这将效率低下,并且坦率地说,这不是使用列表的好方法。
而且,甚至可能有少量数据,但如果有10万名学生,我们将怎么办?
显然,作为一个好的程序员,这种构造是不可接受的。

二维数组来了。
如果我们可以将这五个学生数组存储在一个数组中怎么办?
好吧,我们可以!这就是数组的意义。
我们将这些数组存储在数组本身内。
因为如果我们考虑这些元素的几何点来绘制这些元素,那么我们将需要两个平面(即x和y),因此称为二维数组或者二维数组。

相同的二维数组将是:

student_data = [ [98, 95, 92, 99, 78], [95, 85, 68, 48, 45], [98, 95, 92, 99, 25], [98, 72, 58, 99, 75], [98, 95, 92, 99, 48] ]

要访问元素,我们将使用两个索引,第一个索引定义元素存储在列表中的位置,第二个索引定义元素在该列表中的位置。

例如,我们要访问主题4的学生3的标记,那么我们可以使用

student_data[2][3]

注意:我们已使用位置2的索引号2,因为索引从0开始

如何在二维数组中插入元素?

现在,我们已经学习了如何创建,初始化和遍历二维数组的元素。
现在,我们将看到元素如何存储在二维数组中。

考虑如果我们想将学生6的结果存储在这些2维数组中,那么我们可以使用内置函数append()。

例子

student6 = [ 56, 89, 48, 96, 45]

然后我们要将其存储在student_data中,

student_data.append(student6)

这些将把元素添加到二维数组的最后位置。
因此,基本上,一般语法为:

array_name.append(list_name_to_add)

假设学生2对科目6进行了额外的考试,那么他的分数也必须包括在内。
所以在这里我们也可以使用相同的append函数。
但是插入元素的语法是:

Array_name[ index_of_sub_array ].append(element_to_add)

使用上面的语法,如果我们要插入student2获得的98分,则可以使用上面的语法:

student_data[ 1 ].append( 98 )

与本文一起探讨Python中的2D数组。

如何更新二维数组的元素?

因此,到目前为止,我们已经了解了如何创建二维数组,如何对其进行初始化并用数据填充该数组以及如何在二维数组的任何位置插入元素。
现在让我们进入更新二维数组元素的下一个重要主题。

为了理解这一点,让我们继续以student_data为例。
现在让我们说Student3重新测试了subject5并获得了98分,现在增加的分数必须更新。
那么我们怎样才能做到这一点呢?
我们可以简单地使用赋值运算符来实现。

student_data[ 2 ][ 4 ] = 98

如我们所见,25已增加到98.

因此,可以使用广义语法来更新2-d数组的任何元素:

Array_name[index_of_sub_array][ index_of_element_to_update ] = new_value

有了这些,我们可以一个一个地更新元素。
但是,如果我们想更新学生的完整分数表怎么办?
然后,编辑每个条目都很繁琐。
因此,尽管一一编辑元素,我们仍可以更改整个信息数组。

比方说,student1的数据输入错误,现在必须进行更新,因此我们可以创建一个新的student1的mark_sheet数组,然后更新相应的列表。
很明显要注意,当我们整体替换数组时,不需要[index_of_element_to_update],因此用于更新整个数组的新通用语法将是:

Array_name[index_of_sub_array] = new_sub_array

例如,错误输入了student1标记,而新标记是45、78、96、78、85.
则可以如下更新:

student1 = [45, 78, 96, 78, 85]
student_data[ 0 ] = student1

我们可以看到完整数组的更新方式。

如何删除二维数组的元素?

现在让我们看看如何删除二维数组的任何元素。
假设学生4离开学校,必须删除他的记录,那么我们将必须删除他的整个条目,或者我们可以说数组。
因此,要删除列表对象的元素,我们使用pop函数。

因此,要删除student4的数据,我们可以执行以下操作:

student_data.pop( 3 )

通用语法为:

array_name.pop(index_of_sub_array_to_remove)

但是,在某些情况下,我们必须删除特定的元素而不是完整的数组。
我们可以使用pop函数实现相同的功能。
考虑到学生1未从科目2中注册,则必须删除其在科目2中的条目。
因此,要删除student1的subject2条目,

student_data[ 0 ].pop(1)

因此,删除二维数组元素的通用语法为:

Array_name[index_of_sub_array].pop(index_of_element_to_remove)