当前位置: 首页 > news >正文

day-006-列表入门

Day 6:列表入门——给数据排个队

字符串是"一串字符",列表则是"一串任意东西"——数字、字符串、甚至另一个列表都可以放进去。今天开始学 Python 最常用的数据结构。


一、什么是列表?先看一个生活场景

假设你要记录班上5个同学的成绩:

# 不用列表,需要5个变量(可怕)score1=85score2=92score3=78score4=95score5=88# 用列表,一个变量搞定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)# ['苹果', '橙子', '葡萄', '西瓜']popped=fruits.pop()# 删除并返回最后一个元素print(popped)# 西瓜print(fruits)# ['苹果', '橙子', '葡萄']popped2=fruits.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)# 计算总分和平均分total=sum(scores)avg=total/len(scores)print(f"成绩:{scores}")print(f"最高分:{max(scores)}")print(f"最低分:{min(scores)}")print(f"总分:{total}")print(f"平均分:{avg:.1f}")# 找出不及格的成绩forscoreinscores:ifscore<60: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()

今日踩坑记录

  1. append 和 extend 搞混append([4,5])加进去的是整个列表(变成嵌套),extend([4,5])是把元素逐个加入。简单记:append = 追加一个东西,extend = 展开加入。
  2. remove() 只删第一个[1,2,1,3].remove(1)会剩下[2,1,3]。想删所有匹配的元素,用列表推导式(后面会学)。
  3. 遍历时不要增删元素:在for fruit in fruits:循环里做fruits.remove()fruits.append()会导致跳过元素或死循环。正确的做法是遍历列表的副本for fruit in fruits[:]:

七、明天学什么?

今天学了列表的基本功。明天继续——列表的排序、列表推导式、以及列表的"不可变亲戚"——元组(Tuple)


列表是编程最亲切的数据结构。它像一个听话的小助手,帮你把乱七八糟的数据整理得井井有条。

第6天,打卡完成。明天见!


本系列是个人学习笔记,如有错误欢迎在评论区指正交流。

http://www.zskr.cn/news/1383113.html

相关文章:

  • 界面好看又懂命理的AI软件?第三方深度观察数字玄学底座的视觉美学与算法硬实力
  • 新手必看:用Vulfocus在线靶场复现MACCMS RCE漏洞
  • Taotoken CLI工具使用指南,一键配置开发环境与多个AI工具
  • 从T-Board到L-Board:零遮挡面包板载板的设计与实战
  • 为什么大厂都不用XGBoost?聊聊背后的大坑
  • 程序员相亲,我说用AI写代码,对方以为我吹牛
  • 3. RNN及其变体
  • 缓存与数据库双写不一致问题及终极解决方案(高频面试题)
  • Joy-Con Toolkit深度解析:从手柄自定义到传感器校准的完整指南
  • Tomato-Novel-Downloader 终极指南:5步掌握智能小说下载与格式转换
  • PyAutoGUI图像识别翻车?手把手教你提升游戏自动化脚本的点击准确率
  • YOLOv8手势识别检测系统(项目源码+YOLO数据集+模型权重+UI界面+python+深度学习+环境配置)
  • 终极LaTeX转Word公式神器:3分钟让数学公式在Word中完美呈现
  • 如何用SMUDebugTool深度掌控你的AMD Ryzen处理器性能
  • 2026年静压式液位计国产品牌综合实力排名与深度选型指南 - 仪表品牌榜
  • claude code用户如何迁移到taotoken解决封号与token不足问题
  • Linux文件系统与权限超详解:inode、软硬链接、文件权限、用户组、底层原理
  • Python 入门教程系列
  • 告别手动更新!用Synopsys AXI Slave Agent的Memory模型,让你的验证环境自动响应读写事务
  • 企业内训材料生成场景下Taotoken多模型选型的实践
  • 巴中房屋渗漏与白蚁滋生全解析|本地气候通病成因、避坑要点与专业修缮方案 - 鲁顺
  • 2026述职报告工具横评:4款实用AI工具高效搞定职场述职
  • 创业团队如何借助Taotoken统一管理多个AI项目API成本
  • Spring Ai入门
  • 教育机构在AI课程实验中采用Taotoken管理学生用量
  • 写了一个广告拦截APP
  • Steam成就管理终极指南:5分钟学会修复游戏成就的简单方法
  • 无人驾驶汽车高速工况智能决策与轨迹规划与跟踪控制方法【附代码】
  • archlinux安装脚本
  • ClickHouse 架构设计深度解析:分布式模型、高可用与选型对比