从以下几个角度分析,基本使用、存储、性能和使用场景。
一、基本使用
列表:动态,长度不固定,可以增删改;
元组:静态,长度固定,不能直接增删改,但可以合并元组;
都支持索引、切片、嵌套、函数转换和内置函数。
二、存储
列表:预分配,多申请一些空间以备后续存储数据,存储相同的数据,列表比元组占用空间大;
元组:在创建的时候已确定占用内存的大小,且无法直接修改元组;
列表和元组都是存储对象的内存地址,既指针的指针数组。
三、性能
元组:不可变,较小的元组在引用计数为0时,不会被回收,而是被缓存起来,后续需要创建相同元组时直接从缓存中载入,不用重新创建;
元组的初始化效率高于列表,并且元组是可哈希的,可作为字典的key;
列表:增删改的效率高于元组,但两者的查找效率基本一致;
四、场景
元组:存储的数据和数量不变;
列表:存储的数据或者数量可变: