关于序列 序列:有顺序的元素排列;第一个元素的索引为0 列表list,元组tuple,字符串str都属于序列;但一般情况下,只有list可修改,后二者不可修改 一、序列通用操作 1、索引–访问元素里的单个元素 indexing 第一个元素的索引为0; 倒数第n个元素的索引为-n 1 2 3 4 greet = 'Hello' greet[0] greet[-1] 'Hello'[0] 2、切片–访问某个范围的多个元素 slicing 需要提供两个索引指定范围的边界。 第一个索引是起始点的编号,第二个索引是边界终点的编号**+1** 1 2 3 4 5 6 7 8 9 numbers = [1,2,3,4,5,6,7,8,9,10] numbers[1:3] # [2, 3] numbers[-5:-3] # [6, 7] numbers[3:] numbers[:9] numbers[:] 3、序列相加/相乘 1 2 3 4 5 # 序列相加(连接) [1,2,3] + [4,5,6] # 序列相乘 'hello' * 3 4、确认是否包含某元素 1 2 3 4 5 'A' in 'ABC' # True 'li' in ['li', 'wang','zhou'] # True 5、补充:关于set集合 集合set内没有重复元素,且没有顺序,所以本质上不属于序列; 可使用set()函数创建集合,或者使用{}创建; 主要用于成员资格检查(类似上面的第4点),以及集合的交、并、补等操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ##创建集合 set(range(5)) # {0, 1, 2, 3, 4} {4,6,1,9,0} # {0, 1, 4, 6, 9} ##成员资格检查 0 in {4,6,1,9,0} # True ##集合操作 a = {1,2,3} b = {1,2,4} c = {1,2} ###(1)交集 a.intersection(b) # 通过函数调用,b可以是list等可迭代对象 (下同) a & b # 通过符号调用,b必须是set对象 (下同) # {1, 2} ###(2)是否子集 c.issubset(a) c <= a # True ###(3)差集 a.difference(b) a-b # {3} ###(4)全集 a.union(b) a | b # {1, 2, 3, 4} 二、列表的特有操作 1、利用索引与切片直接修改列表 索引 1 2 x = [1,2,3] x[1] = 1 切片 1 2 3 4 5 6 7 8 9 10 11 #由于字符串不能修改,需要先将字符串转为列表 names = list('python') names[1:3] = list('YT') #由于赋值的字符串的长度可以与被修改的字符串长度不同,所以可以引申用法 ## 变相的插入 names = list('python') names[1:1] = list('AAA') ## 变相的删除 names = list('python') names[1:3] = [] 2、列表的方法–增删改查 增 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # (1) append: 增加元素到末尾 numbers = [1, 2, 3] numbers.append(4) ##原地修改,无返回值 # (2) extend: 增加列表里的元素到末尾 numbers = [1, 2, 3] numbers.extend([4, 5, 6]) ##原地修改,无返回值 # (3) insert: 在指定索引位置插入元素 numbers = [1, 2, 3] numbers.insert(2, "four") # [1, 2, 'four', 3] ##原地修改,无返回值 删 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # (1) pop: 删除最后一个元素 numbers = [1, 2, 3] numbers.pop() ##原地修改,并返回被删除的值 # (2) remove: 删除指定元素的值 numbers = [1, 2, 3] numbers.remove(1) # [2, 3] ##原地修改,无返回值 # 关于list列表的删除操作,有一个函数`del`支持根据索引删除元素 numbers = [1, 2, 3] del numbers[1] # [1, 3] 改 1 2 3 4 5 6 7 8 9 # (1) reverse: 逆转当前列表元素的顺序 numbers = [1, 2, 3] numbers.reverse() ##原地修改,无返回值 # (2) sort: 顺序排列当前列表的元素, 默认升序排列 numbers = [2, 1, 3] numbers.sort() numbers.sort(reverse=True) 查 1 2 3 4 5 6 7 # (1) count: 查看某一元素的频率 numbers = [1, 2, 2, 3, 3, 3] numbers.count(2) # (2) index: 查看某一元素值的索引 numbers = [1, 2, 3] numbers.index(2) 3、filter()搭配lamda列表筛选 filter()函数包含如下两个参数
...