第一次,学python的时候,我看到列表这个词语,并不知道这是什么东西。听名字,感觉很高大上。当学习列表完,原来只不过就是一个数组(数组的升级版)。
List是python里面最基本的数据结构。序列中每个元素都是从索引(下标)从0开始,依次叠加。
List操作的方法很多,只能熟悉基本常用的这个方法。
第二个数据结构是元祖,元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表。
元祖的方法只有count和index。
1.切片(获取多个元素)
1 poets = ["libai", "dufu", "luyou", "wangwei", "sushi", "qinguan", "qinshaoyou", "liyu", "yanshu"] 2 poets[1:5] # 从下标1开始取,至第5个内(不包括5)1 <= x < 5 3 # [‘dufu‘, ‘luyou‘, ‘wangwei‘, ‘sushi‘] 4 poets[-1] # -1直接获取最后一个元素 5 # yanshu 6 poets[3:-1] # 如果想取最后一个元素,不能这样写,这样包含-1在内,应该是这样写 poets[3:] 7 # [‘wangwei‘, ‘sushi‘, ‘qinguan‘, ‘qinshaoyou‘, ‘liyu‘] 8 poets[::2] # 最后一个参数 相当于步长,每隔元素就取一个 9 # [‘libai‘, ‘luyou‘, ‘sushi‘, ‘qinshaoyou‘, ‘yanshu‘]
2.追加(在某尾添加一个元素)
1 poets.append("dumu") 2 # [‘libai‘, ‘dufu‘, ‘luyou‘, ‘wangwei‘, ‘sushi‘, ‘qinguan‘, ‘qinshaoyou‘, ‘liyu‘, ‘yanshu‘, ‘dumu‘] 3 # poets = poets.append("dumu") || print(poets.append("dumu")) 该方法没有返回值,如果这样操作得到结果为none
3.插入
1 sancao = ["caozhi", "coacao", "caopi"] 2 poets.insert(1, sancao) 3 # [‘libai‘, [‘caozhi‘, ‘coacao‘, ‘caopi‘], ‘dufu‘, ‘luyou‘, 4 # ‘wangwei‘, ‘sushi‘, ‘qinguan‘, ‘qinshaoyou‘, ‘liyu‘, ‘yanshu‘, ‘dumu‘] 5 # 这个方法需要两个参数,选择要插入的位置和要插入的元素 如果只用一个参数,会报错:insert() takes exactly 2 arguments (1 given) 6 # 第一个参数 只能是数字 不能是字符串 否则会报错: ‘str‘ object cannot be interpreted as an integer 7 # 第二个参数 可以不填,要填字符串,数字都可以,或者列表等等。。。
4.更新
poets[1] = "dufu" # 更新好像没什么可以说的,就是这样,选择对应下标的元素覆盖,如果括号没有输入索引,会报错语法错误 invalid syntax # poets[] = "ceishi" # poets[‘1‘] = "ceishi" # 当然索引只能是整形不能是字符串 list indices must be integers or slices, not str
5.移除
poets = ["libai", "dufu", "libai", "luyou"] poets.remove("libai") # [‘dufu‘, ‘libai‘, ‘luyou‘] # 选择要移除的元素,不是索引,如果有两个相同元素,只移除第一个匹配项 # 如果不输入元素,会报错 x not in list 或者放空 remove() takes exactly one argument (0 given) poets.pop() # 默认删除最后一个元素 # [‘dufu‘, ‘libai‘] poets = ["libai", "dufu", "luyou", "wangwei", "sushi", "qinguan", "qinshaoyou", "liyu", "yanshu"] poets.pop(4) # [‘libai‘, ‘dufu‘, ‘luyou‘, ‘wangwei‘, ‘qinguan‘, ‘qinshaoyou‘, ‘liyu‘, ‘yanshu‘] sancao = ["caocao", "caozhi", "caopi"] poets.insert(1, sancao) # [‘libai‘, [‘caocao‘, ‘caozhi‘, ‘caopi‘], ‘dufu‘, ‘luyou‘, ‘wangwei‘, ‘qinguan‘, ‘qinshaoyou‘, ‘liyu‘, ‘yanshu‘] poets.pop(1) # pop可以删除嵌套中的列表 # [‘libai‘, ‘dufu‘, ‘luyou‘, ‘wangwei‘, ‘qinguan‘, ‘qinshaoyou‘, ‘liyu‘, ‘yanshu‘] del poets[0:3] # 删除列表的元素,此方法可以一次性删除多个元素,跟切片道理一样 # [‘wangwei‘, ‘qinguan‘, ‘qinshaoyou‘, ‘liyu‘, ‘yanshu‘]
6.扩展(在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表))
1 aList = ["liubei", "guanyu", "zhangfei"] 2 bList = ["zhaoyun", "machao", "huangzhong"] 3 aList.extend(bList) 4 # [‘liubei‘, ‘guanyu‘, ‘zhangfei‘, ‘zhaoyun‘, ‘machao‘, ‘huangzhong‘] 5 aList.extend("bList") # 如果是字符串,会把字符串分割依次放入列表中 6 # [‘liubei‘, ‘guanyu‘, ‘zhangfei‘, ‘b‘, ‘L‘, ‘i‘, ‘s‘, ‘t‘] 7 aList.extend(1) # int‘ object is not iterable
7.统计(统计某个元素在列表中出现的次数)
1 List1 = ["a", "v", "b", "a", "a", " ", "",1] 2 List1.count("") # 统计元素的个数 3 # 3 4 List1.count("") # 如果不填,应该是统计空格 注意" " 和 ""的区别 5 # 1 6 List1.count(1) # 也可以统计整形的个数 7 # 1
8.获取下标
1 List1 = ["a", "v", "b", "a", "a", " ", "", 1] 2 List1.index("a") # 如果有多个相同,至返回第一个元素的下标 3 # 0 4 List1.index("") 5 # 6 6 List1.index("c") # 如果没找到,如果没有找到对象则抛出异常
9.排序&翻转(对列表的元素进行反向排序)
1 List3 = ["lin", "huang", "li", 1, 3, 4] 2 # List3.sort() # python 版本问题 3.0版本 不支持 数字和字符串排序 unorderable types: int() < str() 3 # python 2.0版本支持 数字和字符串排序 4 List3[3] = ‘1‘ 5 List3[4] = ‘3‘ 6 List3[5] = ‘4‘ 7 List3.sort() 8 # [‘1‘, ‘3‘, ‘4‘, ‘huang‘, ‘li‘, ‘lin‘] 9 List3.reverse() 10 List3 11 # [‘lin‘, ‘li‘, ‘huang‘, ‘4‘, ‘3‘, ‘1‘]
10.拷贝
1 List1 = [‘a‘, ‘b‘, ‘c‘, 2, 3, 4, [8, 9, 4], ‘h‘] 2 List2 = List1.copy() # 复制一份出来 3 List2[0] = ‘A‘ # copy只能完整把列表第一层数据复制一份 4 List2[6][0] = ‘k‘ # 深层里面列表不会完全复制一份,深层列表都指向同一个内存地址。如果深层的数据很大,整个复制不来很占内存 5 List1 6 List2 7 # [‘a‘, ‘b‘, ‘c‘, 2, 3, 4, [‘k‘, 9, 4], ‘h‘] 8 # [‘A‘, ‘b‘, ‘c‘, 2, 3, 4, [‘k‘, 9, 4], ‘h‘] 9 # 如果想实现深层列表完全复制一份,必须调用第三方库 10 # copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。 11 # copy.deepcopy 深拷贝 拷贝对象及其子对象 12 import copy 13 # List3 = List1.deepcopy() # 深copy
时间: 2024-10-05 05:01:57