python中常见的数据结构:列表-List、元祖-Tuple
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
初始化一个列表和元祖,元祖的性能要比列表快10倍左右,通过python3 -m timeit "t=[]" 来获取创建list所需的时间
如果存储的数据是一个不变的值,使用元祖来存储
如果存储的数据是一个变化的值,使用列表来存储
列表中的每个元素都被分配一个数字作为索引,用来表示该元素在列表内所排在的位置。第一个元素的索引是0,第二个索引是1,依此类推,Python的列表是一个有序可重复的元素集合,可嵌套、迭代、修改、切片、追加、删除,成员判断
从数据结构角度看,Python的列表是一个可变长度的顺序存储结构,每一个位置存放的都是对象的指针。
>>> l=['a',1,2,'c']
>>> max(l)
Traceback (most recent call last):
File "", line 1, in
TypeError: '>' not supported between instances of 'int' and 'str'
>>> min(l)
Traceback (most recent call last):
File "", line 1, in
TypeError: '<' not supported between instances of 'int' and 'str'
>>>
注意:max、min在Python3中,不能对不同类型的对象进行大小的比较了。
根据以上代码的tracback可以知道,append()里面只能追加一个元素,sort()排序只能对相同类型的元素进行排序
1、使用方括号加下标访问元素
2、切片(形成新元组对象)
3、count()/index()
4、len()/max()/min()/tuple()
1、修改、新增元素
2、删除某个元素(但可以删除整个元组)
3、所有会对元组内部元素发生修改动作的方法。例如,元组没有remove,append,pop等方法。
>>> tup = ('a', 'b', ['A', 'B'])
>>> tup[2][0] = 'X'
>>> tup[2][1] = 'Y'
>>> tup
('a', 'b', ['X', 'Y'])