python之关于数组和列表的区别及说明
作者:季布, 发布时间:2021-07-29 17:35:31
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'>
来源:https://blog.csdn.net/weixin_47906106/article/details/116490658


猜你喜欢
- 本文实例讲述了python使用urllib2提交http post请求的方法。分享给大家供大家参考。具体实现方法如下:#!/usr/bin/
- 汇总整理一套Python网页爬虫,文本处理,科学计算,机器学习和数据挖掘的兵器谱。1. Python网页爬虫工具集一个真实的项目,一定是从获
- 下面是一些有助于更有效地使用 SQL 事件探查器的提示和技巧。运行的跟踪过多如果 Microsoft? SQL Server? 实例运行得过
- 方法1 自带pytorch自带方法,计算模型参数总量total = sum([param.nelement() for param in m
- 1、首先访问http://www.python.org/download/去下载最新的python版本。2、安装下载包,一路next。3、为
- 来自Six Revisions的一篇文章,作者对一些主流的浏览器进行了测试比较,测试主要针对以下几个方面进行:1.JavaScript执行速
- 数据初始化import pandas as pdimport numpy as npa=np.array([['北京',
- 问题在使用MySQL数据库的时候,经常会遇到这么一个问题,就是“Can not connect to MySQL server. Too m
- 一、需求:有三张表,学生表、成绩表和课程表,我们可以通过连表查询出学生姓名、课程及对应的成绩: 所需表sql-- -------------
- PHP session用法其实很简单它可以把用户提交的数据以全局变量形式保存在一个session中并且会生成一个唯一的session_id,
- 个人网站如有会员注册模块+动网论坛的话,那网站要与动网论坛系统整合,实现不同Web系统之间的用户信息同步更新、登录等操作就不是件容易的事了,
- 备注1:解决连接MySQL数据库很慢的问题vim /etc/my.cnf添加内容:skip-name-resolve,重启数据库。 
- 前言:在网络时代,图片已经成为了我们生活中不可或缺的一部分。随着各种社交媒体的兴起,我们可以在网上看到越来越多的图片,但是如何从这些图片中获
- 本文实例讲述了php+mysql删除指定编号员工信息的方法。分享给大家供大家参考。具体分析如下:利用php提交员工编号给mysql,然后由m
- 因为做新闻爬虫,url里面0-9的日期要左侧加零。经过查询之后得到了两种方法。一、先设一个足够大的数,比如1000000,然后加上当前的数字
- 本文给大家介绍PHP中Http协议post请求参数,具体内容如下所示:WEB开发中信息基本全是在POST与GET请求与响应中进行,GET因其
- 今天为大家介绍使用 mitmproxy 这个抓包工具如何监控手机上网,并且通过抓包,把我们想要的数据下载下来。启动 mitmproxy首先我
- 交互设计就是研究人与物体之间如何互动的问题,比如按电梯时,按钮立即高亮,同时屏幕上显示电梯现在所在楼层数,这个过程就是交互设计,而电梯按钮用
- 简介Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene&trad
- pytorch默认使用单精度float32训练模型,原因在于:使用float16训练模型,模型效果会有损失,而使用double(float6