1 列表定义/截取
list是一种有序的集合,可以随时添加和删除其中的元素。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。列表用
[]
标识,其截取规则也是切片,同 字符串 一致。
1.1 列表定义(中括号)
1.1.1 直接定义
直接定义 | |
---|---|
python # 元素中字符串引号可混用 list1 = ['a', "b", '''c'''] print(list1) print(list1[1]) # 多种数据类型作为列表元素 list2 = ['A', "B", 1] print(list2) print(list2[1]) # 列表嵌套 list3 = [list1, list2] print(list3) print(list3[1][1]) |
python # ['a', 'b', 'c'] b # ['A', 'B', 1] B # [['a', 'b', 'c'], ['A', 'B', 1]] B |
1.1.2 方法定义
方法定义 | |
---|---|
python staffs = list() staffs.append('Peter') staffs.append('Joey') staffs.append('Bill') staffs.append('Janet') print(staffs) |
python ['Peter', 'Joey', 'Bill', 'Janet'] |
1.1.3 列表推导式
列表推导式 | |
---|---|
python # 基础式 # 写法:list = [变量名 for 变量名 in range(a,b+1)] list1 = [i**2 for i in range(1,9)] print(list1) # 输出:[1, 4, 9, 16, 25, 36, 49, 64] # 条件式 # 写法:list = [变量名 for 变量名 in range(a,b+1) if i的条件表达式] list1 = [i**2 for i in range(1,9) if i < 5] print(list1) # 输出:[1, 4, 9, 16] # 二元推导式 # 写法:list = [(i, j) for i in range(a,b+1) for j in range(c,d+1)] list3 = [(i, j) for i in range(1,2+1) for j in range(1,3+1)] print(list3) # 输出:[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3)] # 二元条件推导式 # 写法:list = [(i, j) for i in range(a,b+1) if i的条件表达式 for j in range(c,d+1) j的条件表达式] list4 = [(i, j) for i in range(1,2+1) if i == 1 for j in range(1,3+1) if j > 1] print(list4) # 输出:[(1, 2), (1, 3)] |
1.2 列表计算
列表计算 | |
---|---|
python list1 = ['a', 'b', 'c'] list2 = ['A', 'B', 'C'] # * 为叠加 print(list1 * 2) # + 为直接合并 print(list1 + list2) # , 为空格衔接 print(list1, list2) # in 存在判定 print('a' in list1) |
python # ['a', 'b', 'c', 'a', 'b', 'c'] # ['a', 'b', 'c', 'A', 'B', 'C'] # ['a', 'b', 'c'] ['A', 'B', 'C'] # True |
1.3 列表切片(中括号)
列表切片 | |
---|---|
python list1 = [ '0', '1', '2', '3', '4', '5', '6' ] # list1[n] # list1[索引:截点:步长] # 指定字符 print(list1[3]) # 缺省值 print(list1[0:len(list1):1]) print(list1[-len(list1)::1]) # 顺序打印全部 print(list1) print(list1[:]) # 第一参数 表起点 print(list1[4:]) print(list1[-3:]) # 第二参数 表终点 print(list1[:3]) print(list1[:-4]) # 第一二参数 符号相同 print(list1[1:4]) print(list1[-6:-3]) # 第三参数 正负 表顺逆 print(list1[::-1]) # 第三参数 大小 表间隔 print(list1[::2]) print(list1[::-2]) # 列表切片结果为列表 list2 = list1[1:4] print(list2) print(type(list2)) |
python # # # 3 ['0', '1', '2', '3', '4', '5', '6'] ['0', '1', '2', '3', '4', '5', '6'] # ['0', '1', '2', '3', '4', '5', '6'] ['0', '1', '2', '3', '4', '5', '6'] # ['4', '5', '6'] ['4', '5', '6'] # ['0', '1', '2'] ['0', '1', '2'] # ['1', '2', '3'] ['1', '2', '3'] # ['6', '5', '4', '3', '2', '1', '0'] # ['0', '2', '4', '6'] ['6', '4', '2', '0'] # ['1', '2', '3'] <class 'list'> |
plain 从后面索引: -6 -5 -4 -3 -2 -1 从前面索引: 0 1 2 3 4 5 +---+---+---+---+---+---+ ['a','b','c','d','e','f'] +---+---+---+---+---+---+ 从前面截取: : 1 2 3 4 5 : 从后面截取: : -5 -4 -3 -2 -1 : |
2 列表函数
2.1 元素最值(max min)
python list1 = ['a', 'b', '1', '2'] # 返回最小元素 print(min(list1)) # 返回最大元素 print(max(list1)) list2 = ['a', 'b', 1, 2] # 返回最小元素 print(min(list2)) |
python # 1 # b # 报错:TypeError:列表元素类型须一致 |
---|---|
2.2 元素数量(len)
python list1 = ['a', 'b', '1', '2'] # 查找所有元素数量 print(len(list1)) # 查找某一元素数量 print(list1.count('b')) |
python # 4 # 1 |
---|---|
2.3 转换函数(list)
python # 字符串转列表 str = '[1, 2]' print(list(str)) # 元组转列表 tup = (1, 2) print(list(tup)) # 集合转列表 ran = range(2) print(list(ran)) |
python # ['[', '1', ',', ' ', '2', ']'] # [1, 2] # [0, 1] |
---|---|
2.4 排序函数(sorted)
python # 数字排序 list1 = [41, 46, 94, 5, 89, 74, 56] print(sorted(list1)) # 字符串排序 list2 = [ 'adf', 'rygfg', 'sdfe', 'ds' ] print(sorted(list2)) # 不同数据类型不可混合使用 |
python # [5, 41, 46, 56, 74, 89, 94] # ['adf', 'ds', 'rygfg', 'sdfe'] # |
---|---|
2.5 做和函数(sum)
3 列表方法
3.1 增加元素(append insert extend)
python list1 = list() # 列表末尾处添加元素 list1.append('A') print(list1) # 列表索引处添加元素 list1.insert(1, 'B') print(list1) # 列表末尾处添加列表 list1.extend(['a', 'b']) print(list1) |
python # ['A'] # ['A', 'B'] # ['A', 'B', 'a', 'b'] |
---|---|
3.2 删除元素(remove pop del clear)
方法 删元素 | |
---|---|
python list1 = [1, 2, 3, 1, 2, 3] # 删除 第一个识别 的元素 list1.remove(1) print(list1) # 删除 索引所指向 的元素 list1.pop(0) print(list1) # 按索引 删除最后 的元素 list1.pop() print(list1) # 元素清空 list1.clear() print(list1) |
python # [2, 3, 1, 2, 3] # [3, 1, 2, 3] # [3, 1, 2] # [] |
del 语句 删元素 | |
python # 按索引 批量删除 list2 = list(range(5)) print(list2) del list2[1:3] # 按切片删元素 print(list2) # 清空 del list2[:] print(list2) |
python # [0, 1, 2, 3, 4] [0, 3, 4] # [] |
3.3 改变元素([])
python list1 = ['a', 'b', 'c', 'd'] list1[1] = 'B' print(list1) |
python ['a', 'B', 'c', 'd'] |
---|---|
3.4 查询元素(index)
python list1 = ['a', 'b', 'c', 'd'] # 查找索引处对应的元素 print(list1[1]) print(list1[-1]) # 查找第一个匹配元素索引 print(list1.index('b')) |
python # b d # 1 |
---|---|
3.5 元素统计(count)
python list1 = ['a', 'b', 'a', 'b'] # 查找所有元素数量 print(len(list1)) # 查找某个元素的数量 print(list1.count('b')) |
python # 4 # 2 |
---|---|
3.6 元素排序(reverse sort)
顺序反转 | |
---|---|
python list1 = [1, 2, 3, 4] # 使用方法反转 list1.reverse() print(list1) # 原对象 # 使用切片反转 list2 = list1[::-1] print(list2) # 新对象 |
python # [4, 3, 2, 1] # [1, 2, 3, 4] |
数字排序 | |
python list1 = [41, 46, 94, 5, 89, 74, 56] # 按数值 顺序排序 完整写法 list1.sort(key=int, reverse=False) print(list1) # 按数值 顺序排序 缺省写法 list1.sort() print(list1) # 按数值 逆序排序 完整写法 list1.sort(key=int, reverse = True) print(list1) # 按数值 逆序排序 缺省写法 list1.sort(reverse = True) print(list1) # 按字符 顺序排序 缺省写法 list1.sort(key=str) print(list1) |
python # [5, 41, 46, 56, 74, 89, 94] # [5, 41, 46, 56, 74, 89, 94] # [94, 89, 74, 56, 46, 41, 5] # [94, 89, 74, 56, 46, 41, 5] # [41, 46, 5, 56, 74, 89, 94] |
字符排序 | |
python list2 = [ 'adf', 'rygfg', 'sdfe', 'ds' ] # 按字符 顺序排序 完整写法 list2.sort(key=str, reverse=False) print(list2) # 按字符 顺序排序 缺省写法 list2.sort() print(list2) # 按字符 逆序排序 完整写法 list2.sort(key=str, reverse=True) print(list2) # 按字符 逆序排序 缺省写法 list2.sort(key=str) print(list2) # 先按字符长度 再按大小排序 缺省写法 list2.sort(key=len) print(list2) |
python # ['adf', 'ds', 'rygfg', 'sdfe'] # ['adf', 'ds', 'rygfg', 'sdfe'] # ['sdfe', 'rygfg', 'ds', 'adf'] # ['adf', 'ds', 'rygfg', 'sdfe'] # ['ds', 'adf', 'sdfe', 'rygfg'] |
3.7 列表复制(copy 有坑)
python list1 = ['a', 'b', 'c', 'd'] # 复制列表 不同步修改 list2 = list1.copy() list2[2] = 'C' print(list2) print(list1) # 复制列表 同步修改 list3 = list1 list3[2] = 'C' print(list3) print(list1) # 同步修改 |
python # ['a', 'b', 'C', 'd'] ['a', 'b', 'c', 'd'] # ['a', 'b', 'C', 'd'] ['a', 'b', 'C', 'd'] # 惊了 |
---|---|