python中常见的数据结构:列表-List、元祖-Tuple
- 列表和元祖都是一个可以放置任意数据类型的有序集合,对于大多数语言来说集合的数据类型必须一致,但是python却可以不相同,列表和元祖中的元素都可以随意嵌套
- 列表和元祖中的元素要是是字符时,需要用括号括起来
- 列表和元祖的区别:
1、列表是动态的,长度大小不固定,可以随意增加、删除、和改变元素,而不改变列表的变量名称
2、元祖是静态的,长度大小固定,无法增加,删除,和改变元素,如果想改变一个元祖,只能重新开辟一块内存空间,来创建一个新的元祖,
- 列表和元祖的基本操作以及注意事项
1、列表和元祖都支持 index索引 [] 、以及负数索引 [-1],
2、列表和元祖都支持切片操作,第二个:后面是步长,当步长是-1时,表示对列表反转
列表和元祖之间可以随意转换,通过tuple 和list转化
- 列表和元祖常见的内置函数
m.count(item) 、n.count(item) 统计列表、元祖中某一个元素出现的次数
m.index(item)、n.count(item) 统计列表、元祖中某一个元素第一次出现的index索引
m.reverse()、m.sort() 分别表示对列表进行原地反转和排序,但是元祖没有这两个方法,因为元祖不可变,
m.sort(reverse=True) 从大到小排序,m.sort(reverse=False) 从小到大排序
reversed(m)reversed(n)分别对列表和元祖进行反转,并返回一个新的倒转之后的迭代器,可以使用list、tuple进行转化
sorted(m,reverse=True)、 sorted(n,reverse=True),返回一个排序之后的新的列表,元祖也会被返回一个列表list
- 列表和元祖的存储方式,python中列表为了减少每次增加和删除操作时空间分配的开销,python每次分配空间都会额外多分配一些空间,这样的机制叫做 over-allocating,来保证操作的高效性
- 元祖长度大小固定,元素不可变,所以元祖的存储空间固定
- 列表和元祖性能
初始化一个列表和元祖,元祖的性能要比列表快10倍左右,通过python3 -m timeit "t=[]" 来获取创建list所需的时间
- 列表和元祖的使用场景
如果存储的数据是一个不变的值,使用元祖来存储
如果存储的数据是一个变化的值,使用列表来存储