Python基础---列表和元组(list&tuple)
数据结构:以某种方式(如编号)组合起来的数据元素(数字、字符或者其他数据结构)的集合;
Python中最常见的数据结构为序列(sequence);
Python中最常见的序列有:列表、元组、字符串;列表是可以被修改的,元组和字符串不可以被修改;
通用的序列操作(适用于所有的序列)
索引(indexing)
序列中所有的元素都有编号,从左至右从0开始递增;‘0’表示左数第一个元素,而‘-1’则表示从右数第一个元素;
1 >>> lt_a = ['a','b','c'] 2 >>> lt_a[0] 3 'a' 4 >>> lt_a[-1] 5 'c' 6 >>>
切片(slicing)
索引一般用来访问序列中的单个元素,而切片则用来访问特定范围内的多个元素;
>>> a = [1,2,3,4,5,6,7,8,9,10] >>> a[1:3]#表示访问列表a中index为1至index为3之间的元素,且为不包含index为3的元素,即左闭右开; [2, 3]
若切片的起始索引号大于结束索引号,则切片结果为空序列;
1 >>> a[3:2] 2 []
在执行切片操作时,默认的步长为1,也可以明确指定步长的长度;
1 >>> a[0:9:2] 2 [1, 3, 5, 7, 9]
几个特殊的切片表示方法:
1 >>> a = [1,2,3,4,5,6,7,8,9,10] 2 >>> a[:3] 3 [1, 2, 3] 4 >>> a[3:] 5 [4, 5, 6, 7, 8, 9, 10] 6 >>> a[:] 7 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
1 >>> a = [1,2,3,4,5,6,7,8,9,10] 2 >>> a[::2] 3 [1, 3, 5, 7, 9] 4 >>> a[::-1] 5 [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
序列相加
1 >>> a = [1,2,3] 2 >>> b = [4,5,6] 3 >>> a + b 4 [1, 2, 3, 4, 5, 6] 5 >>> a 6 [1, 2, 3] 7 >>> b 8 [4, 5, 6]
注意:序列相加并不改变原有序列的值,而是创建了一个新的序列;
乘法
1 >>> a * 3 2 [1, 2, 3, 1, 2, 3, 1, 2, 3] 3 >>> 'python' * 5 4 'pythonpythonpythonpythonpython'
成员资格
检查特定的值是否包含在序列中,包含则返回True,不包含则返回False;
1 >>> a = [1,2,3] 2 >>> 1 in a 3 True 4 >>> 4 in a 5 False
1 >>> a = 'python' 2 >>> 'p' in a 3 True 4 >>> 'x' in a 5 False
长度、最小值、最大值
1 >>> a = [1,2,3,4,10,100,2,300] 2 >>> len(a) 3 8 4 >>> max(a) 5 300 6 >>> min(a) 7 1
列表的基本操作
将其他序列转变为列表
1 >>> a = 'abcdef' 2 >>> list(a) 3 ['a', 'b', 'c', 'd', 'e', 'f'] 4 >>> a = (1,2,3,4,5) 5 >>> list(a) 6 [1, 2, 3, 4, 5]
备注:list()可以理解为一个函数,但本质上是一个类;
修改列表
1 >>> a = [1,2,3,4] 2 >>> a 3 [1, 2, 3, 4] 4 >>> a[1] = 'eric' 5 >>> a 6 [1, 'eric', 3, 4]
删除列表中的元素
1 >>> a 2 [1, 'eric', 3, 4] 3 >>> del a[1] 4 >>> a 5 [1, 3, 4]
给切片赋值
#1对1替换切片对应的值
1 >>> a = [1,2,3,4] 2 >>> a[1:3] = list('bc') 3 >>> a 4 [1, 'b', 'c', 4]
#将制定范围内的切换替换为空值,等效于del a[1:4]
1 >>> a = [1,2,3,4,5] 2 >>> a 3 [1, 2, 3, 4, 5] 4 >>> a[1:4] = [] 5 >>> a 6 [1, 5]
#在指定index位置插入新元素。
1 >>> a = [1,2,3,4,5] 2 >>> a 3 [1, 2, 3, 4, 5] 4 >>> a[1:1] = list('eric') 5 >>> a 6 [1, 'e', 'r', 'i', 'c', 2, 3, 4, 5]
#将指定index范围内的元素替换为新的元素(替换前后元素数量不对称)
1 >>> a = [1,2,3,4,5] 2 >>> a[1:] = [10,11,12,13,14,15] 3 >>> a 4 [1, 10, 11, 12, 13, 14, 15]
列表方法
方法是与对象(列表、数字、字符串等)联系紧密的函数。方法的调用与函数的调用类似,函数一般是直接调用函数名,而方法调用则在其掐面加上了对象和句号。
append():将一个对象附加到列表末尾;
1 >>> a = [1,2,3,4,5] 2 >>> a.append('eric') 3 >>> a 4 [1, 2, 3, 4, 5, 'eric']
clear():清空列表中的内容;
1 >>> a 2 [1, 2, 3, 4, 5, 'eric'] 3 >>> a.clear() 4 >>> a 5 []
copy():复制列表;
#如下所式:使用赋值方式b=a,即将b和a都与[1,2,3]进行关联,本质上a和b还是同一个列表,所以修改b的元素后,a也会被修改;
1 >>> a = [1,2,3] 2 >>> b = a 3 >>> b[1] = 100 4 >>> a 5 [1, 100, 3] 6 >>> b 7 [1, 100, 3]
#copy()函数实质是对原有列表建立了一个副本,且返回值为新建的列表副本;
1 >>> a = [1,2,3] 2 >>> b = a.copy() 3 >>> b[1] = 100 4 >>> a 5 [1, 2, 3] 6 >>> b 7 [1, 100, 3]
count():计算指定的元素在列表中出现的次数;
#count()的返回值为一个数字,即次数;
1 >>> a = [1,1,333,44,1,2,3,1] 2 >>> a.count(1) 3 4 4 >>> b = a.count(1) 5 >>> print(b) 6 4
extend():同时将多个值附加到列表的末尾;
#注意与拼接的区别:
#extend():直接修改方法所作用的对象。
1 >>> a = [1,2,3] 2 >>> b = [4,5,6] 3 >>> a.extend(b) 4 >>> a 5 [1, 2, 3, 4, 5, 6] 6 >>> b 7 [4, 5, 6] #拼接:不修改原有对象的值,而是建立新的对象来接收拼接后的值。 10 >>> a = [1,2,3] 11 >>> b = [4,5,6] 12 >>> c = a + b 13 >>> a 14 [1, 2, 3] 15 >>> b 16 [4, 5, 6] 17 >>> c 18 [1, 2, 3, 4, 5, 6]
index():在列表中查找指定的值第一次出现的索引;
#index()返回值为具体的索引编号。
1 >>> a = list('eric') 2 >>> a 3 ['e', 'r', 'i', 'c'] 4 >>> a.index('i') 5 2
insert():将一个对象插入列表指定的位置;
1 >>> a = [1,2,3,4,5] 2 >>> a.insert(3,'eric') 3 >>> a 4 [1, 2, 3, 'eric', 4, 5]
pop():从列表中删除一个元素(默认为最后一个元素),并返回被删除的元素;
1 >>> a = [1,2,3,4,5] 2 >>> a.pop() 3 5
注:pop()是唯一一个既修改列表且返回值不为None的列表方法。其余方法,若修改了列表,则返回值为None,若存在部位None的返回值,则不会修改列表;
remove():在列表中删除第一个为指定值得元素;
1 >>> a = [1,2,'xqs','1','xqs',3,4] 2 >>> a 3 [1, 2, 'xqs', '1', 'xqs', 3, 4] 4 >>> a.remove('xqs') 5 >>> a 6 [1, 2, '1', 'xqs', 3, 4]
reverse():按相反的顺序排列列表中的元素;
1 >>> a = [1,2,3,4,5] 2 >>> a.reverse() 3 >>> a 4 [5, 4, 3, 2, 1]
sort():对列表进行就地排序,即对原来的列表进行修改,使其元素按顺序排列,而不是返回排列后列表的副本;
1 >> a = [10,100,9,1,20,50,2] 2 >>> a 3 [10, 100, 9, 1, 20, 50, 2] 4 >>> a.sort() 5 >>> a 6 [1, 2, 9, 10, 20, 50, 100]
1 >>> a = ['b','eric','alex','abc','c'] 2 >>> 3 >>> a.sort() 4 >>> a 5 ['abc', 'alex', 'b', 'c', 'eric']
方法sort存在两个可选参数:key和reverse:key的值可以为内置函数或者自定义函数,而reverse的值只能为True或者Flase;
#默认情况下,reverse值为False,key为None;
>>> a = ['a','abcd','11sss2','bc'] >>> a ['a', 'abcd', '11sss2', 'bc'] >>> a.sort(key=len) >>> a ['a', 'bc', 'abcd', '11sss2'] >>> a.sort(key=len,reverse=True) >>> a ['11sss2', 'abcd', 'bc', 'a']
元组
将其他序列转变为元组:
1 >>> a = [1,2,3] 2 >>> tuple(a) 3 (1, 2, 3) 4 >>> 5 >>> tuple('abc') 6 ('a', 'b', 'c')
列表的方法中,只有count()和index()这种查询类的函数在元组中也适用,其余修改列的函数均不适用;
#若元组中仅存在一个数字,则需要在数字后面增加一个逗号,否则结果将为数字,而不是列表:
1 >>> a = 1 2 >>> b = (1) 3 >>> c = (1,) 4 >>> type(a) 5 <class 'int'> 6 >>> type(b) 7 <class 'int'> 8 >>> type(c) 9 <class 'tuple'>
浙公网安备 33010602011771号