数组原理详解及python语法实现

一、基本特点
1、数组(Array)是一种线性表数据结构。

说到这里,就先介绍一下线性表和非线性表:
线性表就是数据排成一条线一样的数据结构,每个线性表最多只有前后两个方向,常见线性表数据结构有:数组、链表、队列、栈
非线性表与线性相对立,在非线性表中,数据之间并不是简单的前后关系,常见数据结构有:二叉树、堆等。

数组作为典型的线性表数据结构,其用一组连续的内存空间,来存储一组具有相同类型的数据,。
数组是一组有固定个数的元素的集合,即给出数组的维数和每一维的上下界,数组中的元素个数就固定了
数组不支持动态扩容

2、数组的查询、增删操作
数组中的元素可以用下标表示,支持随机访问,所以查询是很方便的,查询的时间复杂度是 O(1)
增删操作会涉及数据的搬迁,比较低效,时间复杂度为O(n)

3、多维数组
从逻辑结构上,可以把数组看做一般线性表的扩充。例如,一维数组就是一个线性表,二维数组就是"数据元素是一维数组"的一维数组。
例如一个mXn的二维数组,可将其视为m个一维数组(列向量Column Vector)的组合,或者视为n个一维数组(行向量Row Vector)的组合。
以此类推,即可得到多维数组的定义——n维数组可看成是这样一个线性表,其中每个元素均是一个n-1维的数组
应用最广、最常遇到的是二维数组。

4、稀疏矩阵
稀疏矩阵(Sparse Matrix)是指矩阵中大多数元素为零元素的矩阵,这在推荐系统、NLP中都很常见。
如果按常规分配方法,顺序分配在计算机内,那会造成内存的极大浪费。为此提出另外一种存储方法,仅存放非零元素,但为了找到非零元素的位置,还要记下它所在的行和列。于是采取如下方法:非零元素所在的行、列及它的值构成一个三元组(i,j,v),然后按某种规律存储这些三元组,这种方法可以大大节约存储空间(注意坐标在前,值在后)。

二、python语法实现数组基本操作
1、查找:
a[0]表示数组第一个元素,a[-1]表示数组最后一个元素

>>> a = [5, 4, 3, 2, 1, 0]
>>> a
[5, 4, 3, 2, 1, 0]
>>> a[-1]
0

a[m:n]提取m~n个元素(不含n);a[0:n]提取0-n元素(不含n);a[m:]提取m到最后的元素(含最后元素)

b = a.count(X)获取元素X的个数

2、添加:

append(X)在数组最后添加一个元素X(注意只能添加一个元素

>>> a.append(100)
>>> a
[5, 4, 3, 2, 1, 0, 100]
>>> a.append(101, 102)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: append() takes exactly one argument (2 given)
>>> a.append([101, 102])
>>> a
[5, 4, 3, 2, 1, 0, 100, [101, 102]]

a.extend在数组后添加多个元素

指定位置添加元素insert(n,x)

>>> b
[1, 2, 3]
>>> b.insert(0, 100)
>>> b
[100, 1, 2, 3]

3、删除:
a.remove(“X”) 删除数组中的元素 X

del a[0] 删除数组中指定位置的元素

b= a.pop(2) 删除数组中的元素,并且返回被删除的元素

4、排序:
a.sort() 正序排序

a.sort(reverse=True) 逆序排序

a.reverse() 数组反转

5、求值:
最大值 max(a)
最小值min(a)
求和sum(a)

6、数组和元组:
数组创建用中括号[];元组创建用括号()
元组的值是不能改变的,可以通过list函数将元组转化为数组。

b = (2,3,4)
print(b)
(2, 3, 4)
a = list(b)
print(a)
[2, 3, 4]

参考:
https://blog.csdn.net/csdn_aiyang/article/details/84959056
https://blog.csdn.net/qzc70919700/article/details/72983513

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值