python笔记(3)---列表
lst = ["bob","jack","马云","马化腾","王健林"] del lst[1:3] print(lst)
一、列表索引和切片
lst = ["移动硬盘", "手机", 110, True, False, ["人民币", "美金", '欧元']] lst = ["海上钢琴师", "奥特曼", "咒怨", "舌尖上的中国", "穹顶之下", "金刚"] print(lst[3][2]) # 上 print(lst[-2]) # 穹顶之下 print(lst[1:4]) # ['奥特曼', '咒怨', '舌尖上的中国'] print(lst[-3:-1]) # 顾头不顾尾 print(lst[1::2]) print(lst[-1:-5:-2])
二、列表增加
2.1 append
lst = ["赵四", "施瓦星格", "黄渤", "郭达森", "赛利亚"] 在屁股后面添加 lst.append("黄宏") # 在原有的基础上进行的操作
2.2 insert
# 在xxx位置插入xxxx内容
lst = ["赵四", "施瓦星格", "黄渤", "郭达森", "赛利亚"] lst.insert(1,"王力宏") print(lst) ["赵四","王力宏","施瓦星格", "黄渤", "郭达森", "赛利亚"]
2.3 extend
# 迭代添加
lst = ["赵四", "施瓦星格", "黄渤", "郭达森", "赛利亚"]
lst.extend("麻花藤") print(lst) ["赵四", "施瓦星格", "黄渤", "郭达森", "赛利亚","麻","花","藤"]
lst = ["赵四", "施瓦星格", "黄渤", "郭达森", "赛利亚"] lst.extend(["麻花藤", "马云"]) print(lst) ["赵四", "施瓦星格", "黄渤", "郭达森", "赛利亚","麻花藤", "马云"]
2.4 如果对列表中空的 slice 赋值,就变成了为列表插入元素
# 将第3个到第3个(不包含)元素赋值为新列表的元素,就是插入 b_list[2: 2] = ['x', 'y'] print(b_list) # [1, 'a', 'x', 'y', 'b', 4]
三、列表删除
3.1 pop()
# 根据索引删除元素
lst = ["bob","jack","马云"]
data = lst.pop() #pop()不加索引,默认删除末尾元素,并返回被删除的数据 print(data)
"马云" print(lst)
["bob","jack"]
3.2 remove()
lst = ["bob","jack","马云"] lst.remove("bob") # 删除元素. lst.remove("刘能") # 如果不存在会报错
3.3 del
# 切片删除
lst = ["bob","jack","马云","马化腾","王健林"] del lst[1:3] print(lst) ["bob","马化腾","王健林"]
3.4 如果将列表其中一段赋值为空列表,就变成了从列表中删除元素
# 将第3个到第6个(不包含)元素赋值为空列表,就是删除 b_list[2: 5] = [] print(b_list) # [1, 'a', 4]
四、列表修改
4.1 对元素赋值
a_list = [2, 4, -3.4, 'crazyit', 23] # 对第3个元素赋值 a_list[2] = 'fkit'
print(a_list) # [2, 4, 'fkit', 'crazyit', 23]
4.2 对列表中间一段赋值
b_list = list(range(1, 5)) print(b_list) # 将第2个到第4个(不包含)元素赋值为新列表的元素 b_list[1: 3] = ['a', 'b'] print(b_list)
# [1, 'a', 'b', 4]
4.3 使用字符串赋值,Python 会自动把字符串当成序列处理,其中每个字符都是一个元素。
# Python会自动将str分解成序列
b_list = list(range(1, 5))
b_list[1: 3] = 'Charlie'
print(b_list) # [1, 'C', 'h', 'a', 'r', 'l', 'i', 'e']
4.4 在使用 slice 语法赋值时,也可指定 step 参数。但如果指定了 step 参数,则要求所赋值的列表元素个数与所替换的列表元素个数相等
c_list = list(range(1, 10)) # 指定step为2,被赋值的元素有4个,因此用于赋值的列表也必须有4个元素 c_list[2: 9: 2] = ['a', 'b', 'c', 'd'] print(c_list) # [1, 2, 'a', 4, 'b', 6, 'c', 8, 'd']
五、列表常用方法
5.1 count()
# 统计元素出现的次数
a_list = [2, 30, 'a', [5, 30], 30] # 计算列表中30的出现次数 print(a_list.count(30)) # 计算列表中[5, 30]的出现次数 print(a_list.count([5, 30]))
5.2 index()
# 查找元素的index
a_list = [2, 30, 'a', 'b', 'crazyit', 30] # 定位元素30的出现位置 print(a_list.index(30)) # 从索引2处开始、定位元素30的出现位置 print(a_list.index(30, 2)) # 从索引2处到索引4处之间定位元素30的出现位置,因为找不到该元素,会引发 ValueError 错误 print(a_list.index(30, 2, 4))
运行结果为:
1 5 Traceback (most recent call last): File "C:\Users\mengma\Desktop\1.py", line 7, in <module> print(a_list.index(30, 2, 4)) # ValueError ValueError: 30 is not in list
5.3 reverse()
# reverse() 方法会将列表中所有元素反向存放
a_list = list(range(1, 8)) # 将a_list列表元素反转 a_list.reverse() print(a_list)
运行结果为:
[7, 6, 5, 4, 3, 2, 1]
5.4 sort()
# sort() 方法用于对列表元素进行排序
语法结构:
listname.sort(key=None, reserse=False)
- key 参数用于指定从每个元素中提取一个用于比较的键。例如,使用此方法时设置 key=str.lower 表示在排序时不区分字母大小写。
- reverse 参数用于设置是否需要反转排序,默认 False 表示从小到大排序;如果将该参数设为 True,将会改为从大到小排序。
例如如下代码:
a_list = [3, 4, -2, -30, 14, 9.3, 3.4]
# 对列表元素排序
a_list.sort() print(a_list) b_list = ['Python', 'Swift', 'Ruby', 'Go', 'Kotlin', 'Erlang'] # 对列表元素排序:默认按字符串包含的字符的编码大小比较 b_list.sort() print(b_list) # ['Erlang', 'Go', 'Kotlin', 'Python', 'Ruby', 'Swift']
运行结果为:
[-30, -2, 3, 3.4, 4, 9.3, 14] ['Erlang', 'Go', 'Kotlin', 'Python', 'Ruby', 'Swift']
如下代码示范了 key 和 reverse 参数的用法:
b_list = ['Python', 'Swift', 'Ruby', 'Go', 'Kotlin', 'Erlang'] # 指定key为len,指定使用len函数对集合元素生成比较的键,也就是按字符串的长度比较大小 b_list.sort(key=len) print(b_list) # 指定反向排序 b_list.sort(key=len, reverse=True) print(b_list)
运行结果为:
['Go', 'Ruby', 'Swift', 'Python', 'Kotlin', 'Erlang'] ['Python', 'Kotlin', 'Erlang', 'Swift', 'Ruby', 'Go']
上面两次排序时都将 key 参数指定为 len,这意味着程序将会使用 len() 函数对集合元素生成比较大小的键,即根据集合元素的字符串长度比较大小。
注意,采用 sort() 方法对列表进行排序时,对中文支持不好,其排序结果与常用的音序排序法或者笔画排序法都不一致,因此,如果需要实现对中文内容的列表排序,还需要重新编写相应的方法进行处理,而不能直接使用 sort() 方法。