python之关于数组和列表的区别及说明

 更新时间:2023年05月22日 15:28:17   作者:季布,  
这篇文章主要介绍了python之关于数组和列表的区别及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

python数组和列表的区别

列表和数组的定义

  • 列表用于顺序存储结构。它可以方便、高效的的添加删除元素,并且列表中的元素可以是多种类型。
  • 数组是一个同一类型的数据的有限集合。

数组是什么?

数组(Array)是一种线性表数据结构。它用一组连续的内存,来存储一组具有相同类型的数据。

  • 优点:数组地址是连续的会给我们查找数据提供了极大的方便,让我们很容易的就能根据下标找到你需要的数据,提高了查询效率
  • 缺点:毕竟我们对数组的运用不只是查找数据,还有增加数据,插入数据,删除数据等一些操作;由于数组的特殊性,使得我们在进行这些操作的时候不能对其进行直接操作,还要重新开辟一个新的数组并使其长度增加来存放数据,这样的工作模式给我们带来了很大的不便,影响了效率

**用线性表存储的数据有两个特点

  • 存储的数据本身的类型一定保持相同,是int型就都是int型,是结构体就都是一种结构体。
  • 数据一旦用线性表存储,各个数据元素之间的相对位置就固定了。

形象地来看,线性表就是数据排成像一条线一样的结构,并且最多只有前和后两个方向。数组、链表队列、栈等都是线性表结构。

与其对立的概念是非线性表,如二叉树、堆等。在非线性表中,数据之间并不是简单的前后关系。

将列表当做堆栈使用

列表方法使得列表可以很方便的作为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。

用 append() 方法可以把一个元素添加到堆栈顶。

用不指定索引的 pop() 方法可以把一个元素从堆栈顶释放出来

>>> stack = [3, 4, 5]
>>> stack.append(6)
>>> stack.append(7)
>>> stack
[3, 4, 5, 6, 7]
>>> stack.pop()
7
>>> stack
[3, 4, 5, 6]
>>> stack.pop()
6
>>> stack.pop()
5
>>> stack
[3, 4]

将列表当作队列使用

也可以把列表当做队列用,只是在队列里第一加入的元素,第一个取出来;但是拿列表用作这样的目的效率不高。在列表的最后添加或者弹出元素速度快,然而在列表里插入或者从头部弹出速度却不快(因为所有其他的元素都得一个一个地移动)。

相同点:

  • 都可以根据索引来取其中的元素;

不同点:

  • 列表list中的元素的数据类型可以不一样。数组array里的元素的数据类型必须一样;
  • 列表list不可以进行数学四则运算,数组array可以进行数学四则运算;
  • 相对于array,列表会使用更多的存储空间。
import numpy as np
list1=[1,'a','index']  #list1是列表类型
list2 = np.array([1,2,3,4])  #list2是数组类型
print("list",list1,list1[0],'\n','array',list2,list2[0])
结果
打印结果:
list [1,'a','index'] 1 
array [1 2 3 4] 1

python数组和列表相互转化

  • 数组转化为列表:b=array.tolist()  (把数组array转化为列表b)
  • 列表转化为数组:a=np.array(list)  (把列表lis转化为数组a)

具体代码如下:

import numpy as np
#1.随机生成一个数组a
a=np.random.randn(4,3)
print(a)
print(type(a))
#输出结果如下:
[[-1.95210222  2.68035264  1.16203014]
 [ 0.38123208  0.2106927   0.44987349]
 [-0.60820225 -0.80682695 -0.32048555]
 [-1.08573498  0.30206573 -0.79167439]]
<class 'numpy.ndarray'>
#2.数组a转化为列表b
b=a.tolist()
print(b)
print(type(b))
#输出结果如下:
[[-1.9521022160725312, 2.6803526394133774, 1.1620301390678258], [0.3812320771527832, 0.2106926970310233, 0.4498734879610045], [-0.6082022489361179, -0.8068269457410441, -0.3204855537284452], [-1.0857349768436102, 0.3020657339426819, -0.7916743865958161]]
<class 'list'>
#3.列表b转化为数组c
c=np.array(b)
print(c)
print(type(c))
#输出结果如下:
[[-1.95210222  2.68035264  1.16203014]
 [ 0.38123208  0.2106927   0.44987349]
 [-0.60820225 -0.80682695 -0.32048555]
 [-1.08573498  0.30206573 -0.79167439]]
<class 'numpy.ndarray'>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 如何在django里上传csv文件并进行入库处理的方法

    如何在django里上传csv文件并进行入库处理的方法

    这篇文章主要介绍了如何在django里上传csv文件并进行入库处理的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • python的virtualenv虚拟环境常见问题和命令

    python的virtualenv虚拟环境常见问题和命令

    在Python中,venv是一个用于创建和管理虚拟环境的模块,虚拟环境可以帮助你在项目之间隔离不同的Python包和依赖关系,这篇文章主要介绍了python的virtualenv虚拟环境常见问题和命令,需要的朋友可以参考下
    2024-07-07
  • Python asyncore socket客户端实现方法详解

    Python asyncore socket客户端实现方法详解

    这篇文章主要介绍了Python asyncore socket客户端实现方法,asyncore库是python的一个标准库,提供了以异步的方式写入套接字服务的客户端和服务器的基础结构
    2022-12-12
  • Python islower()函数的使用详解

    Python islower()函数的使用详解

    这篇文章主要介绍了Python islower()函数使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Pandas DataFrame分组求和、分组乘积的实例

    Pandas DataFrame分组求和、分组乘积的实例

    这篇文章主要介绍了Pandas DataFrame分组求和、分组乘积的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • python如何判断网络是否通

    python如何判断网络是否通

    这篇文章主要介绍了python如何判断网络是否通?具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str

    Python BeautifulSoup [解决方法] TypeError: list indices must be

    这篇文章主要介绍了Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • python实现识别相似图片小结

    python实现识别相似图片小结

    本文给大家分享的是使用Python实现图片相似度识别的总结,代码实用pil模块比较两个图片的相似度,根据实际实用,代码虽短但效果不错,还是非常靠谱的。
    2016-02-02
  • Django项目主urls导入应用中views的红线问题解决

    Django项目主urls导入应用中views的红线问题解决

    这篇文章主要介绍了Django项目主urls导入应用中views的红线问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python实现根据Excel生成Model和数据导入脚本

    Python实现根据Excel生成Model和数据导入脚本

    最近遇到一个需求,有几十个Excel,每个的字段都不一样,然后都差不多是第一行是表头,后面几千上万的数据,需要把这些Excel中的数据全都加入某个已经上线的Django项目。所以我造了个自动生成 Model和导入脚本的轮子,希望对大家有所帮助
    2022-11-11

最新评论