Python序列之list和tuple常用方法以及注意事项
sequence序列
sequence(序列)是一组有顺序的对象的集合。序列可以包含一个或多个元素,也可以没有任何元素。
我们之前所说的基本数据类型,都可以作为序列的对象。对象还可以是另一个序列。序列有两种:list(表)和tuple(元组)。
list和tuple的主要区别在于,一旦建立,tuple的各个元素不可再变更,而list的各个元素可以再变更。
List
获得list元素的个数:
>>>lst=['更新慢','python',5.44,False] >>>len(lst) 4
引用访问时索引是从0开始,注意不要越界:
>>>lst[0] '更新慢' >>>lst[1] 'python' >>>lst[2] 5.44 >>>lst[3] False >>>lst[4] Traceback(mostrecentcalllast): File"<pyshell#30>",line1,in<module> lst[4] IndexError:listindexoutofrange
用-1做索引,直接获取最后一个元素:
>>>lst[-1] False >>>lst[-2] 5.44 >>>lst[-3] 'python' >>>lst[-4] '更新慢' >>>lst[-5] Traceback(mostrecentcalllast): File"<pyshell#35>",line1,in<module> lst[-5] IndexError:listindexoutofrange
因为list是一个可变的有序表,所以,可以往list末尾追加元素:
>>>lst.append('加我一个') >>>lst ['更新慢','python',5.44,False,'加我一个']
一次追加多个元素:
>>>lst.extend(['A','B','C']) >>>lst ['更新慢','python',5.44,False,'加我一个','A','B','C']
要删除list末尾的元素,用pop()方法:
>>>lst.pop() 'C' >>>lst ['更新慢','python',5.44,False,'加我一个','A','B']
删除指定位置的元素,用pop(i)方法,其中i是索引位置:
>>>lst.pop(0) '更新慢' >>>lst ['python',5.44,False,'加我一个','A']
list元素替换,可以直接赋值给对应的索引位置:
>>>lst[-1]='100' >>>lst ['python',5.44,False,'加我一个','100']
list元素也可以是另一个list,插入的那个list只算一个元素:
>>>lst.append(lst1) >>>lst ['python',5.44,False,'加我一个','100',['666','QWER']] >>>len(lst) 6
Tuple
Tuple一旦初始化就不能修改。字符串是一种特殊的元素,因此可以执行元组的相关操作。
>>>str='该睡觉了,晚安!' >>>print(str[:7]) 该睡觉了,晚安
不可变的tuple意义就在于因为不可变,所以代码更安全。如果可能,能用tuple就尽量用tuple。
>>>tuple=('1','2','3') >>>tuple[0]=6 Traceback(mostrecentcalllast): File"<pyshell#62>",line1,in<module> tuple[0]=6 TypeError:'tuple'objectdoesnotsupportitemassignment
定义一个空tuple:
>>>tuple1=() >>>tuple1 ()
注意,要定义一个只有1个元素的tuple:
>>>tuple2=(666,) >>>tuple2 (666,) #正确的 >>>tuple3=(666) >>>tuple3 666 #错误的,只定义了666这个数
注意:Tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。
>>>l=['CCTV-5','HI'] >>>tuple4=('UFO','HACK',l) >>>tuple4 ('UFO','HACK',['CCTV-5','HI']) >>>l[1]='我先变一下' >>>tuple4 ('UFO','HACK',['CCTV-5','我先变一下'])
所以尽量避免这种套用。
当日小结
掌握List和Tuple的常用方法以及注意事项。