news 2026/11/3 10:43:36

【Python】五大容器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Python】五大容器

列表


为什么需要列表

  • 如果要存储多个同类数据(比如全班同学名字),单独定义一个个变量非常麻烦,列表可以一次性存放多个数据;

  • 其他语言里叫数组,Python 里叫list,列表是可变类型


列表定义

  • 语法:
    列表变量 = [元素1, 元素2, 元素3, ...]
  • 特点:
    (1)元素可以是不同数据类型(字符串、数字、布尔都可以放一起)
    (2)有序,靠索引下标访问,下标从 0 开始
  • list1=['apple','banana','pineapple'] print(list1) print(type(list1)) ''' ['apple', 'banana', 'pineapple'] <class 'list'> '''

下标索引 和 切片

  • list1=['张三','李四','王五','赵六','田七'] #索引取值:取第三个元素(下标2) e=list1[2] print(e) # 王五 # 切片:list[起始:结束],取到结束前一位,左闭右开 es=list1[1:4] # 下标1 2 3 print(es) # ['李四', '王五', '赵六']

列表遍历

  • 遍历:把每个元素依次取出

  • for 循环
    list1 = ['张三', '李四', '王五', '赵六', '田七'] # for 循环 for e in list1: print(e)

  • while 循环(靠下标遍历)
    list1 = ['张三', '李四', '王五', '赵六', '田七'] i=0 while i<len(list1): print(list1[i]) i+=1


列表四大操作:增、删、改、查

增操作

  • list1 = ['张三', '李四', 5, 10, True,False,5,'张三'] print(list1.index('李四')) # 1 print(list1.count('张三')) # 2 if 5 in list1: print(f"5出现了{list1.count(5)}次") #5出现了2次 else: print("不存在")
增操作

  • append 和 extend 区别:
    append(tmp)是把整个 tmp 当成一个元素塞进去;
    extend(tmp)是拆开 tmp 一个个放进去
  • list2=[7,5,3,9,10,2] list2.append(20) print(list2) #[7, 5, 3, 9, 10, 2, 20] tmp=[15,19,13] list2.extend(tmp) print(list2) # [7, 5, 3, 9, 10, 2, 20, 15, 19, 13] list2.insert(2,100) # 下标为2的位置插入100 print(list2) # [7, 5, 100, 3, 9, 10, 2, 20, 15, 19, 13]
删操作

  • list2=[7,5,3,9,10,2] del list2[2] # 删掉指定下标的元素 print(list2) # [7, 5, 9, 10, 2] res=list2.pop() # 默认删末尾,拿到删掉的值 print(res) # 2 print(list2) #[7, 5, 9, 10] list2.remove(9) print(list2) # [7, 5, 10]
改操作

  • list2 = [7, 5, 3, 9, 10, 2] list2[5]=4 print(list2) # [7, 5, 3, 9, 10, 4] list2.reverse() print(list2) # [4, 10, 9, 3, 5, 7] list2.sort(reverse=False) # 升序 print(list2) # [3, 4, 5, 7, 9, 10]

列表嵌套(二维列表)

  • 列表里面的元素,本身又是列表,相当于二维数组,适合存储分组数据
    (多个班级、每个班级多名学生)
  • students=[ ['张三','李四'], ['王五','赵六'], ['田七','钱八'] ] # 取值:先取外层下标,再取内层下标 print(students[0]) # ['张三', '李四'] print(students[1]) # ['王五', '赵六'] print(students[0][1]) # 李四 print(students[2][1]) # 钱八 # 嵌套遍历 for clas in students: for name in clas: print(name) # 张三 # 李四 # 王五 # 赵六 # 田七 # 钱八

案例:相邻元素取最大值

  • 需求:输入[7,8,9,5,6,7,2,3],输出[8,9,9,6,7,7,3]

  • 逻辑:依次比较当前元素和下一个元素,把较大值存入新列表

  • list1=[7,8,9,5,6,7,2,3] res=[] i=0 while i<len(list1)-1: # 最后一个元素没有下一位,所以-1 if list1[i]>list1[i+1]: res.append(list1[i]) else: res.append(list1[i+1]) i+=1 print(res) #[8, 9, 9, 6, 7, 7, 3]

总结

  • 下标从 0 开始,不要越界(下标超出范围会报错)
  • index()/remove()找不到元素直接报错,建议先用in判断
  • sort()只能对同类型可比较的列表排序,字符串和数字不能混排
  • 列表是可变对象:
    append、extend、insert、del、pop、remove、reverse、sort
    都是原地修改,大多没有返回值


元组的定义与使用

为什么需要元组

  • 列表 list 可以存多个数据,但是可以修改里面元素

  • 如果希望数据存放之后不允许被修改,就用元组 tuple

  • num_list = [10, 20, 30] num_list[0] = 100 # 列表可以修改

元组的定义

  • 符号:小括号 (),元素用逗号隔开

  • 元素可以是不同数据类型

  • 重点:只有一个元素的时候,后面必须加逗号,不然不是元组

  • # 多个元素元组 tuple1=(10,20,30) print(type(tuple1)) # <class 'tuple'> # 单个元素,逗号不能丢,丢了就不是元组了 tuple2=(1,) print(type(tuple2)) # <class 'tuple'> # 单个元素,没逗号时 tuple3=(1) print(type(tuple3)) # <class 'int'>

元组的相关操作

  • 元组是不可变类型:不能增、删、改元素,只有查询操作


  • tuple_1=('张三','李四','王五',5,10,15,5) # 索引取值 print(tuple_1[2]) # 王五 # 切片 print(tuple_1[2:5]) # ('王五', 5, 10) # 查找下标 print(tuple_1.index(10)) # 4 # 统计次数 print(tuple_1.count(5)) # 2 # 长度 print(len(tuple_1)) # 7 # 遍历元组(和列表一样,for循环) for e in tuple_1: print(e)

两个案例代码

  • 案例 1:嵌套元组去重,提取唯一元素
    tuple_1=( (1,2,3), (2,4,6), (2,3,5) ) list_res=[] # 外层循环,从tuple_1中取一个子元组 for tuple_e in tuple_1: # 内层循环,从子元组中取一个元素 for num in tuple_e: if num not in list_res: # 改元素不在列表中,则放入列表 list_res.append(num) print(list_res) # [1, 2, 3, 4, 6, 5]
  • 案例 2:统计元组里面奇数的个数
    需求:元组 (1,2,3,4,5,6,7,8,9),数奇数数量
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/3 10:41:49

WINDOWS11常见ERROR5问题排查笔记

微软电脑管家&#xff08;ahflt.sys&#xff09;导致 MSI 安装/卸载失败 Error 5 的完整排查实录症状千奇百怪&#xff0c;根因只有一个&#xff1a;微软电脑管家的 AntiHack 过滤驱动拦截了 Windows Installer 的回滚文件权限操作。本文记录从"Python 卸载报错"一路…

作者头像 李华
网站建设 2026/11/3 10:41:48

那些隐藏在系统深处的 Python 运行秘技,高手都在用

“空谈无益&#xff0c;给我看代码。” — Linus Torvalds把一段临时检查命令&#xff0c;写成可解释、可审查、不会顺手泄露配置的自动化脚本。 python3 -I -c with open("/path/to/repo/config/.env") as f:content f.read()print(content) 这段命令很像深夜排障…

作者头像 李华
网站建设 2026/11/3 10:41:38

深度解析A311Y3是如何重塑端侧AI性价比的

一、 引言&#xff1a;端侧 AI 的“不可能三角”做硬件产品的朋友最近一定深有感触&#xff1a;一方面&#xff0c;客户疯狂要求设备加上“本地 AI”、“跑大模型”的功能&#xff1b;另一方面&#xff0c;存储涨价、BOM 成本卡得死死的&#xff0c;而且设备外壳还要越做越小&a…

作者头像 李华
网站建设 2026/11/3 10:38:13

2026程序员生存指南:AI时代如何找准定位,实现价值倍增?建议收藏!

本文深入分析了AI技术对程序员行业带来的冲击与变革&#xff0c;揭示了全球科技行业的裁员潮与AI工程师薪酬飙升的反差现象。文章指出&#xff0c;整个行业被AI分成了三个层级&#xff0c;每个层级的薪资曲线方向完全不同。初级工程师的训练带正在断掉&#xff0c;而高级工程师…

作者头像 李华