python按列表中元素的长度比大小_浅析python数据类型的性能问题!

739174b0b8c46c14da492d7ffdf2d5a7.gif Python中变量的类型

了解过python语言的同学都知道,Python中的变量不需要声明,变量是在我们給它赋值的时候创建的,要使用一个变量必须先对它进行赋值。

在Python中变量就是变量,它没有类型限制,我们所说的类型是指给变量赋值后,变量所指向的内存中对象的类型。

9dba7f96cd1ffda45c4525f641170a89.png

739174b0b8c46c14da492d7ffdf2d5a7.gif Python中基本的数据类型

Python中给我们内置了很多的数据类型,其中常见基本的数据类型有以下几种:

数值类型:
整数(int)、浮点数(float)、布尔值(bool)
序列类型:
字符串(str)、元组(tuple)、列表(list)
散列类型:
集合(set)、字典(dict)----->字典也称映射类型

这些基本的类型中,用来作为容器存放数据的有:元组、列表、字典、集合这四个类型。

那么这四个类型中元组和列表属于序列类型,字典和集合属于散列类型,下面就序列和散列做一个简要的描述。

序列类型:所谓序列,指定是内部数据是按顺序排列的,通过下标索引来标识位置。
散列类型:内部元素存放是没有顺序的,具体的位置跟散列值相关。

关于序列类型中的列表和元组,很多同学在存储数据的时候只用列表,而不会考虑使用元组,因为元组的功能列表都有,而且列表灵活,那么这种习惯真的好吗?

接下来我们来分析一下元组和列表的性能,看看列表是否真的有那么好用,元组是不是就真的那么鸡肋?

739174b0b8c46c14da492d7ffdf2d5a7.gif 列表、元组的性能分析

问题一:当前需要通过经纬度来标识某个位置,(''北纬28.19','东经112.98'),那么这个经纬度的数据,应该选择列表还是元组来存储?

答案:我的选择是元组。
分析:经纬度这一组数据,长度固定只有两个元素,经纬度的数据是唯一确定的,不需要修改,适合用元组存储,获取元组内的数据可以通过下标
疑问:列表也可存储,也可以通过下标获取元素,而且列表是可变的相对元组更灵活,为什么不用列表?
原因一:列表比元组耗内存,因为列表是可变类型的数据,当我们创建一个列表时,python会给这个列表,分配一块大于实际存储数据量的内存(为后期添加数据做准备)。
而元组是不可变的,定义之后内部的元素和结构就是固定的,当我们创建一个元组时,python给这个元组分配的内存的大小和元组中储存的数据量是相等的。
原因二:元组比列表更快,性能上更占优势,python中初始化一个元组的时间,远远低于列表。请看下图,初始化一个列表的时间 = 初始化一个元组的时间 * 5。

931785433c30b58c5c01ff0c45eb7de9.png

问题二:上面的场景分析中,我们看到元组的性能远远优于列表,那什么时候用列表呢?

答案:列表是可变类型的数据,当我们存储的数据后期会需要修改其中元素的值,或者是添加新的元素,那么此时应当选择列表。
看到这里是不是发现python中的元组并没有你想的那么鸡肋,反而在性能上碾压列表。
一位资深程序员和初级程序员实现同一个功能,性能到底体现在哪里,优秀的程序员会考虑的更多,更全面,大到架构设计,小到基本数据类型的使用。

关于数据类型以及散列类型(字典、集合)更深入的知识点,在我们柠檬班测试开发的课程中会有深入的讲解!

本文由柠檬班木森老师原创,转载需注明出处!

9c1aecf18408f5474583166033329d69.png

转发到朋友圈是最高的赞赏

关注柠檬班微信公众号,获取最新技术文章

让软件测试学习变得更简单!

dff89e5c71953d561c44637cb2dcac20.png

今日福利

需要Python数据类型相关学习视频

可加小米老师微信:

13327316731

暗号:公众号

4f9b4eb2c201b32d0844e6e8d04456f6.png

来都来了,点个在看再走吧~~~

1fa94aab3ed02a100278f528e2348d05.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值