Python实现动态数组的方法

  介绍

这篇文章将为大家详细讲解有关Python实现动态数组的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

<强> Python序列类型

在本博客中,我们将学习探讨Python的各种“序列”类,内置的三大常用数据结构,列表类(清单),元组类(元组)和字符串类(str)。

不知道你发现没有,这些类都有一个很明显的共性,都可以用来保存多个数据元素,最主要的功能是:每个类都支持下标(索引)访问该序列的元素,比如使用语法Seq[我]。其实上面每个类都是使用数组这种简单的数据结构表示。

但是熟悉Python的读者可能知道这3种数据结构又有一些不同:比如元组和字符串是不能修改的,列表可以修改。

<强>计算机内存中的数组结构

计算机体系结构中,我们知道计算机主存由位信息组成,这些位通常被归类成更大的单元,这些单元则取决于精准的系统架构。一个典型的单元就是一个字节,相当于8位。

计算机系统拥有庞大数量的存储字节,那么如何才能找到我们的信息存在哪个字节呢?答案就是大家平时熟知的存储地址。基于存储地址,主存中的任何字节都能被有效的访问。实际上,每个存储字节都和一个作为其地址的唯一二进制数字相关联。如下图中,每个字节均被指定了存储地址:

 Python实现动态数组的方法

一般来说,编程语言记录标识符和其关联值所存储的地址之间的关系。比如,当我们声明标识符xx就有可能和存储器中的某一值相关联,而标识符yy就可能和其他的值相关联。一组相关的变量能够一个接一个地存储在计算机存储器的一块连续区域内。我们将这种方式称为数组。

我们来看Python中的例子,一个文本字符串你好是以一列有序字符的形式存储的,假定该字符串的每个Unicode字符需要两个字节的存储空间。最下面的数字就是该字符串的索引值。

 Python实现动态数组的方法

我们可以看的到,数组可以存储多个值而无需构造具有特定索引的多个变量来指定其中的每个项目,并且几乎在所有编程语言(例如C、Java、c#、c++)中使用,但是Python更具有优势.Python在构建列表时,熟悉的读者可能知道,不需要预先定义数组或列表的大小,相反,在Python中,列表具有动态性质,我们可以不断的往列表中添加我们想要的数据元素。接下来,让我们看看Python列表的知识(已经熟悉的读者可以快速浏览或者跳过)。

<强> Python列表

Python列表的操作

创建列表的语法格式:

[ele1、ele2 ele3, ele4,…)

创建元组的语法格式:

(ele1、ele2 ele3, ele4,…)

元组比列表的内存空间利用率更高,因为元组是固定不变的,所以没有必要创建拥有剩余空间的动态数组。

我们先在Python的IDE中创建一个列表,然后大致了解一下列表部分内置操作,我们先创建了一个名为test_list的列表,然后修改(插入或删除)元素,反转或清空列表,具体如下:

在祝辞祝辞,test_list =,[], #,创建名为test_list的空列表   在祝辞祝辞,test_list.append (“Hello")   在祝辞祝辞,test_list.append (“World")   在祝辞祝辞test_list   [& # 39;你好# 39;,,& # 39;& # 39;】   在祝辞祝辞,test_list =, (“Hello",,“Array",, 2019年,“easy  learning",,“DataStructure"], #,重新给test_list赋值   在祝辞祝辞,len (test_list), #,求列表的长度   5   在祝辞祝辞,test_list[2],=, 1024, #,修改列表元素   在祝辞祝辞test_list   [& # 39;你好# 39;,,& # 39;数组# 39;,,1024,,& # 39;easy 学习# 39;,,& # 39;数据结构# 39;】   在在在   在祝辞祝辞,test_list.insert(1,“小姐:love"),, #,向列表中指定位置中插入一个元素   在祝辞祝辞test_list   [& # 39;你好# 39;,,& # 39;小姐:爱# 39;,,& # 39;数组# 39;,,1024,,& # 39;easy 学习# 39;,,& # 39;数据结构# 39;】   在祝辞祝辞,test_list.append(2020), #,向列表末尾增加一个元素   在祝辞祝辞test_list   [& # 39;你好# 39;,,& # 39;小姐:爱# 39;,,& # 39;数组# 39;,,1024,,& # 39;easy 学习# 39;,,& # 39;数据结构# 39;,,2020年)   在在在   在祝辞祝辞,test_list.pop(1),, #,删除指定位置的元素   & # 39;小姐:爱# 39;   在祝辞祝辞,test_list.remove(2020), #,删除指定元素   在在在,   在祝辞祝辞,test_list.index(& # 39;你好,),,#,查找某个元素的索引值   0   在祝辞祝辞,test_list.index(& # 39;你好,),,#,如果查找某个元素不在列表中,返回ValueError错误   Traceback  (most  recent  call 最后一个):   ,File “& lt; pyshell # 11祝辞,,,line  1,拷贝& lt; module>   test_list.index才能(& # 39;你好# 39;)   ValueError: & # 39;你好# 39;is  not 拷贝列表   在在在,   在祝辞祝辞,test_list.reverse(), #,反转整个列表   在祝辞祝辞test_list   [& # 39;数据结构# 39;,,& # 39;easy 学习# 39;,,2019,,& # 39;数组# 39;,,& # 39;你好# 39;】   在祝辞祝辞,test_list.clear(),, #,清空列表   在祝辞祝辞test_list   []

Python实现动态数组的方法