列表:动态的,长度不固定,可以增删改查
元组:静态的,长度固定,无法增删减。如果想对已有元组进行改变,只能创建一个新的元组
创建&初始化
列表 new_list=[1,2,3,4,5,6]
empty_list=list()
[]和list()都可以直接创建空列表,但是list()是一个function call,会创建stack,并进行参数检查操作,而[]是内置的C函数,效率更高
元组 new_tup=(1,2,3,4,5,6)
存储差异
列表和list中放置了相同的元素,但是元组的存储空间比列表的要少。
是因为列表是动态的,需要存储指针来指向对应的元素,并且需要额外存储已经分配的大小长度(这种机制保证操作的高效性:增加/删除的时间复杂度为 O(1),当空间不足时,及时分配额外的空间
元组的长度大是固定的,元素不可变,所以存储空间固定
所以元组要比列表更轻量级一些,性能略优于列表。
而元组又属于静态变量,当静态变量不被使用且占用空间不大,python会将这部分内容进行缓存,可以加快运行速度
切片
索引从0开始,-1可以表示最后一个元素。不可以超出边界
列表 new_list[0,2]
元组 new_tup=(1,2)
元组和列表转换
list(new_tup)
tuple(new_list)
常用方法
可以通过dir查看所有内置方法
元组方法
- len(tup) 元组的元素个数
- max(tup)元组中的最大值
- tup.count(obj) 查找元素出现的次数
- tup.index(index)查找对应索引的元素
- sorted(tup,key,reverse=False)对元组进行排序,会生成一个新的元组,默认从小到大排序
- del tup 删除整个元组
列表方法
- len(list):列表元素个数
- max(list) 列表元素最大值
- list.append(obj) 在列表最后追加元素
- list.count(obj) 元素在列表中出现的次数
- list.extend(suq)在列表末尾追加另一个序列的所有值
- list.index(obj)找到元素在列表中第一次出现的索引
- list.insert(index,obj)在指定位置插入元素
- list.pop(index)默认移出列表最后一个元素,并返回该元素的值。若指定index,则删除对应index的元素,并返回该元素的值
- del list[index] 删除列表指定索引的元素
- list.remove(obj)移出列表中某个值的第一个匹配项
- list.reverse()翻转列表中的元素
- list.sort(key=node,reverse=False) 对原列表进行排序,默认为由小到大
- list.copy()返回列表的浅复制,等于list[:],浅复制,复制后初始内容相同,id不同,后续原列表变化不会影响复制的列表
- for index,value in enumerate(list)可以依次遍历列表的所有索引和值
- list[index]=obj 通过索引修改元素值,索引不能越界
- del list 删除列表
参考资料:
https://www.runoob.com/python/python-tuples.html