--列表`)
这一节了解一下Python中的列表列表是一种有序、可变、可重复的数据容器用来把多个数据放在一个变量里管理。可以把它理解成一排“编号格子”每个格子存一个数据编号从0开始。简单总结如下:API:1 列表下标访问lst[index]:通过整数下标获取列表单个元素下标从 0 开始支持嵌套列表多重下标。item lst[下标] spam [cat,bat,rat]; spam[0] → cat; spam[0][1] 读取嵌套列表内部元素。2 负数下标 lst[-n]:负下标从列表末尾倒数取元素,-1代表最后一个元素-2倒数第二个。item lst[-负数字] spam [cat,bat,rat]; spam[-1] → rat3 列表切片 lst[start:end]:截取子列表包含 start 下标不包含 end 下标start 省略从头end 省略到末尾lst[:]复制整个列表。sub_list lst[起始下标:结束下标] spam[1:3] → [bat,rat]; spam[:2] → [cat,bat]4 len(lst)内置函数:返回列表内元素总个数同样适用于元组、字符串。num len(列表) len([cat,dog]) → 25 下标修改元素 lst[index] value:利用下标直接修改列表指定位置的值列表是可变类型原地修改。lst[下标] 新值 spam[1] aardvark 将下标 1 位置替换为新内容。6 列表连接运算符 :把两个列表拼接返回全新列表原列表不变。new_list listA listB [1,2] [A,B] → [1,2,A,B]7 列表复制运算符 *:列表乘整数将列表重复多遍生成新列表。new_list lst * 整数 [X,Y] *3 → [X,Y,X,Y,X,Y]8 del lst[index] 删除语句:删除列表指定下标元素后面元素自动向前移位也可以删除变量。原地修改列表。del lst[下标] spam [cat,bat,rat]; del spam[2]9 值 in lst成员运算符:判断某个值是否存在列表内返回布尔 True/False。bool_res 元素 in 列表 cat in [cat,dog] → True10 值 not in lst成员运算符:判断某个值不在列表返回布尔。bool_res 元素 not in 列表 bird not in [cat,dog] → True11 多重序列解包赋值 var1,var2 lst:一行代码将列表元素依次赋值给多个变量变量数量必须等于列表长度。变量1,变量2,变量3 列表 cat [fat,black,loud]; size,color,disp cat12 增强赋值 lst other_list:原地拼接列表等价于 lst lst other_list。lst 另一个列表 a [1,2]; a [3,4] → [1,2,3,4]13 增强赋值 lst * n:原地重复列表 n 次修改原列表。lst * 整数 b [Zophie]; b *3 → [Zophie,Zophie,Zophie]14 lst.index(value)列表方法:查找值在列表中第一次出现的下标找不到抛出ValueError。idx lst.index(目标值) spam [a,b,c]; spam.index(b) →115 lst.append(value)列表方法:在列表末尾追加单个元素原地修改返回 None。lst.append(待添加元素) spam [cat,dog]; spam.append(moose)16 lst.insert(index, value)列表方法:在指定下标位置插入新元素原下标及之后元素向后挪位原地修改。lst.insert(插入位置下标,插入的值) spam.insert(1,chicken)17 lst.remove(value)列表方法:删除列表中第一个匹配该值的元素值不存在抛 ValueError原地修改。lst.remove(要删除的元素值) spam [cat,bat]; spam.remove(bat)18 lst.sort()列表排序方法:原地对列表进行升序排序ASCII 字符顺序返回 None。lst.sort() num [3,1,-2]; num.sort() → [-2,1,3]19 lst.sort(reverseTrue) 逆序排序:sort 的 reverse 参数为 True实现降序逆序原地排序。lst.sort(reverseTrue) spam.sort(reverseTrue)20 lst.sort(keystr.lower)忽略大小写排序:key 参数指定转换函数排序时按小写比较不改变原始列表内容。lst.sort(keystr.lower) [a,Z,A,z].sort(keystr.lower)21 tuple(序列)类型转换函数:接收列表/字符串返回对应的元组不可变序列。t tuple(可迭代对象) tuple([1,2,3]) → (1,2,3)22 list(序列)类型转换函数:接收元组/字符串返回对应的可变列表。lst list(可迭代对象) list((cat,dog)) → [cat,dog]; list(hello) → [h,e,l,l,o]23 元组下标访问 t[index]:元组和列表一样支持下标读取元组不可变不能赋值修改元素item t[下标] eggs(hello,42); eggs[0] → hello24 元组切片 t[start:end]:元组支持切片操作返回新元组。sub_tuple t[start:end] eggs[1:3] → (42,0.5)25 copy.copy(obj) 浅拷贝copy 模块):复制列表创建独立新列表仅复制顶层元素嵌套列表内部依旧共享引用。import copy; new_lst copy.copy(原列表) cheese copy.copy(spam)26 copy.deepcopy(obj)深拷贝copy 模块:完整拷贝包括内部嵌套的子列表全部生成独立副本互不干扰。import copy; new_lst copy.deepcopy(原列表) new_grid copy.deepcopy(grid)27 range(len(lst))配合 for 循环遍历下标:拿到全部下标数字同时访问下标和列表元素。for i in range(len(lst)): 使用lst[i] supplies [pen,book]; for i in range(len(supplies))28 for item in lst 直接遍历元素:for 循环直接迭代列表每个元素不需要下标。for item in lst: 操作item for name in catNames: print(name)29 空列表 []:代表空列表对象用于初始化存放后续添加元素。lst [] catNames []栗子:pet_names [] while True: name input(请输入宠物名字直接回车结束录入) if name : break pet_names.append(name) print(\n 当前所有宠物 ) for idx in range(len(pet_names)): print(f下标{idx}: {pet_names[idx]}) query input(\n输入名字查询是否是我的宠物) if query in pet_names: print(f{query} 是我的宠物) else: print(f{query} 不是我的宠物) del_name input(\n输入想要删除的宠物名字) if del_name in pet_names: pet_names.remove(del_name) print(f已经删除 {del_name}) print(更新后列表, pet_names) else: print(列表中没有该宠物)import copy score_list [Bob, alice, Carol, david, 90, 77] ref_list score_list copy_list copy.copy(score_list) ref_list[0] Tom print(原始列表被引用修改, score_list) print(浅拷贝副本不受影响, copy_list) str_part [Bob, alice, Carol, david] str_part.sort(keystr.lower) print(忽略大小写排序结果, str_part) score_tuple tuple(str_part) print(转为元组, score_tuple) back_list list(score_tuple) a,b,c,d back_list print(f解包a{a},b{b},c{c},d{d}) nested [[1,2], [3,4]] deep_copy_nest copy.deepcopy(nested) deep_copy_nest[0][0] 999 print(原嵌套列表, nested) print(深拷贝修改副本, deep_copy_nest)
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。