Day 6列表入门——给数据排个队字符串是一串字符列表则是一串任意东西——数字、字符串、甚至另一个列表都可以放进去。今天开始学 Python 最常用的数据结构。一、什么是列表先看一个生活场景假设你要记录班上5个同学的成绩# 不用列表需要5个变量可怕score185score292score378score495score588# 用列表一个变量搞定scores[85,92,78,95,88]列表用方括号[]表示元素之间用逗号分隔。它像一个有编号的储物柜每个格子可以放不同的东西# 列表可以放任意类型的元素甚至可以混合empty_list[]# 空列表numbers[1,2,3,4,5]# 全是整数names[张三,李四,王五]# 全是字符串mixed[1,hello,3.14,True]# 混合类型不推荐但合法nested[[1,2],[3,4],[5,6]]# 列表里套列表嵌套列表二、列表的索引和切片——和字符串一样列表的索引规则和字符串完全一致从0开始负数倒着数切片左闭右开。fruits[苹果,香蕉,橙子,葡萄,西瓜]# 索引print(fruits[0])# 苹果print(fruits[-1])# 西瓜 最后一个print(fruits[2])# 橙子# 切片和字符串语法完全一样print(fruits[1:4])# [香蕉, 橙子, 葡萄]print(fruits[:3])# [苹果, 香蕉, 橙子]print(fruits[2:])# [橙子, 葡萄, 西瓜]print(fruits[::-1])# [西瓜, 葡萄, 橙子, 香蕉, 苹果] 倒序# 获取长度print(len(fruits))# 5三、列表的增删改查——基本操作查——访问元素fruits[苹果,香蕉,橙子]# 判断是否包含print(苹果infruits)# Trueprint(榴莲infruits)# Falseprint(榴莲notinfruits)# True# 查位置print(fruits.index(香蕉))# 1# print(fruits.index(榴莲)) # ValueError 找不到会报错改——修改元素fruits[苹果,香蕉,橙子]fruits[1]草莓# 直接通过索引修改print(fruits)# [苹果, 草莓, 橙子]# 修改一段切片赋值fruits[0:2][葡萄,西瓜]print(fruits)# [葡萄, 西瓜, 橙子]注意列表是可变的mutable这和字符串不同可以直接改元素。增——添加元素fruits[苹果,香蕉]fruits.append(橙子)# 追加到末尾print(fruits)# [苹果, 香蕉, 橙子]fruits.insert(1,草莓)# 在索引1的位置插入print(fruits)# [苹果, 草莓, 香蕉, 橙子]fruits.extend([葡萄,西瓜])# 将另一个列表的元素全部加进来print(fruits)# [苹果, 草莓, 香蕉, 橙子, 葡萄, 西瓜]append vs extend 的区别常见面试题a[1,2,3]a.append([4,5])# 把 [4,5] 当做一个整体放进去print(a)# [1, 2, 3, [4, 5]] 4个元素b[1,2,3]b.extend([4,5])# 把 [4,5] 的每个元素逐个加进去print(b)# [1, 2, 3, 4, 5] 5个元素删——删除元素fruits[苹果,香蕉,橙子,葡萄,西瓜]fruits.remove(香蕉)# 删除指定值只删第一个匹配的print(fruits)# [苹果, 橙子, 葡萄, 西瓜]poppedfruits.pop()# 删除并返回最后一个元素print(popped)# 西瓜print(fruits)# [苹果, 橙子, 葡萄]popped2fruits.pop(1)# 删除并返回指定索引的元素print(popped2)# 橙子print(fruits)# [苹果, 葡萄]delfruits[0]# del 关键字删除指定索引不返回值print(fruits)# [葡萄]fruits.clear()# 清空所有元素print(fruits)# []四种删除方式速记remove(值)—— 知道值不知道位置pop(索引)—— 知道位置还想要取出来用del—— 直接删不要返回值clear()—— 全部清空四、遍历列表——逐个访问fruits[苹果,香蕉,橙子]# 方式1直接遍历元素forfruitinfruits:print(fruit)# 方式2需要索引用 enumerate()fori,fruitinenumerate(fruits):print(f{i}:{fruit})# 输出# 0: 苹果# 1: 香蕉# 2: 橙子# 方式3用索引遍历不推荐除非需要跳跃访问foriinrange(len(fruits)):print(fruits[i])五、列表练习题练习1成绩管理器# 创建一个空成绩列表添加5个成绩然后操作scores[]scores.append(85)scores.append(92)scores.append(78)scores.append(95)scores.append(88)# 计算总分和平均分totalsum(scores)avgtotal/len(scores)print(f成绩{scores})print(f最高分{max(scores)})print(f最低分{min(scores)})print(f总分{total})print(f平均分{avg:.1f})# 找出不及格的成绩forscoreinscores:ifscore60:print(f不及格{score})练习2购物车cart[]# 模拟添加商品cart.append(可乐)cart.append(薯片)cart.append(巧克力)print(f当前购物车{cart})# 不想要薯片了cart.remove(薯片)print(f移除后{cart})# 再添加几样cart.extend([饼干,果汁])print(f最终购物车{cart})print(f共{len(cart)}件商品)六、今日学习总结学习内容掌握情况一句话要点列表创建✅ 理解方括号[]逗号分隔索引与切片✅ 理解和字符串一模一样从0开始增append/insert/extend✅ 理解append追加insert指定位置extend批量删remove/pop/del/clear✅ 理解四种方式各有用途改索引赋值✅ 理解列表可变直接改查in / index✅ 理解in判断存在index找位置遍历✅ 理解for循环 enumerate()内置函数✅ 了解sum()、max()、min()、len()今日踩坑记录append 和 extend 搞混append([4,5])加进去的是整个列表变成嵌套extend([4,5])是把元素逐个加入。简单记append 追加一个东西extend 展开加入。remove() 只删第一个[1,2,1,3].remove(1)会剩下[2,1,3]。想删所有匹配的元素用列表推导式后面会学。遍历时不要增删元素在for fruit in fruits:循环里做fruits.remove()或fruits.append()会导致跳过元素或死循环。正确的做法是遍历列表的副本for fruit in fruits[:]:。七、明天学什么今天学了列表的基本功。明天继续——列表的排序、列表推导式、以及列表的不可变亲戚——元组Tuple。列表是编程最亲切的数据结构。它像一个听话的小助手帮你把乱七八糟的数据整理得井井有条。第6天打卡完成。明天见本系列是个人学习笔记如有错误欢迎在评论区指正交流。