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'>

 

posted @ 2020-06-26 12:59  ╰Summer  阅读(145)  评论(0)    收藏  举报