本文主要介绍python原生数据结构列表和元组的特点以及对应的使用场景。
文章目录
- 列表和元组是什么?
- 列表的特点
- 元组的特点
- 列表和元组的共同点
- 列表和元组的差异
- 列表和元组在存储上也有差异
- 列表和元组的性能差异
- 列表和元组的使用场景
l = [1, 2, 'hello', 'world'] # 列表中同时含有int和string类型的元素
l
# 输出
# [1, 2, 'hello', 'world']tup = ('jason', 22) # 元组中同时含有int和string类型的元素
tup
# 输出
# ('jason', 22)
在基本的存数和取数上,列表和元组是相似的:
与数据访问相关的操作也是有相同的内置函数/方法:
| 函数名称 | 函数功能 |
|---|---|
| count(element) | 统计列表或元组中某个element出现的次数 |
| index(element) | 返回列表或元组中某个element第一次出现的索引 |
所以到修改元素相关的操作,列表有内置函数可以用于修改原列表,而元组需要借助外部函数来进行相关操作:
| 列表独有的函数名称 | 函数功能 |
|---|---|
| sort() | 将列表的内容按照一定的规则进行排序 |
| reverse() | 将列表中的元素位置倒转 |
所以我们会看到列表的存储空间会比元组多的同时,列表增加元素之后,占用的空间没有变化;元素越多的元组,占用的空间越大。
>>> l = [1, 2, 3]
>>> l.__sizeof__()
72>>> tup = (1, 2, 3)
>>> tup.__sizeof__()
48>>>
>>>
>>> l = [1,2,3,4]
>>> l.__sizeof__()
72
>>> tup = (1, 2, 3, 4)
>>> tup.__sizeof__()
56
>>>
同时,python对静态数据存在资源缓存。如果程序中的变量不被使用,python会回收它们占用的空间,返还给操作系统,在其他需要使用空间的时候由操作系统分配给python程序中的其他变量或给操作系统中的其他应用。
而元组作为一种静态数据,如果占用的空间不大,那么python会暂时缓存这部分的内存。当下次python需要同样大小的元组时,可以直接复用缓存的元组空间。
对比列表和元组初始化性能差异的代码如下:
python3 -m timeit 'x=(1,2,3,4,5,6)'
20000000 loops, best of 5: 9.97 nsec per looppython3 -m timeit 'x=[1,2,3,4,5,6]'
5000000 loops, best of 5: 50.1 nsec per loop
根据列表和元组的特点,我们可以看判断使用列表或元组时,主要看看存储的数据是否需要修改:
好书推荐:
- 流畅的python
- Python编程 从入门到实践 第2版
- Python数据结构与算法分析 第2版
好课推荐:
- 零基础学python
- python核心技术与实战
- python自动化办公实战
写文不易,如果对你有帮助的话,来一波点赞、收藏、关注吧~👇
上一篇:成都蓉城2-2武汉三镇,恩里克梅开二度,韦世豪破旧主 武汉三镇恩里克 武汉三镇恩里克集锦
下一篇:受益于手机端侧AI,高通第二财季业绩和下季指引超预期,盘后涨5% | 财报见闻 高通第二季度财报内容 高通2024第二财季财报