我们在前几篇文章中依次介绍了列表的特性和用法、列表推导式、列表的底层实现。今天来聊一聊列表在实际开发中的应用场景。
在开发中,选用何种数据结构是由我们面对的数据特征和业务场景决定的。
数据是单个的还是批量的,是小规模的还是海量的?
数据是独立的还是彼此关联的?
数据的生成是随机的还是有先后顺序的?
数据的用途是什么?会不会频繁读写?只读多还是修改多?
数据是否应用于多线程环境?
……(此处省略 N 多情形。)
一旦确定了数据特征和业务场景,我们就可以从开发工具箱中选择合适的工具了。
对于 list 而言,首先它是一个对象集合,你可以在处理批量数据时使用 list。
- >>> alist =[i for i inrange(21)]
- >>> alist
- [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
- >>> alist.append(2021)
- >>> alist
- [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,2021]
我们知道,tuple 也可以用来存储多个对象,但是 tuple 是不可变的,一旦初始化,无法再增减其中的元素的个数。tuple 从语法上保证了元素数目不会被修改。
如果你恰好不希望别人向数据集中增删元素,你应该优先使用 tuple,而非list。反过来,如果你需要动态调整数据集合中的元素的个数,那就应该选择 list。
这是否意味着所有动态数据集都可以使用 list 呢?非也。
如果你的数据很少被修改,绝大部分时间都是被读取的,这很适合使用 list 来存储。因为 list 为我们提供了索引和切片操作,可以快速访问其中的元素。