news 2026/8/25 13:32:21

python学习笔记4 --Python的容器类型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python学习笔记4 --Python的容器类型

第5章 Python的容器类型

5.1 容器概述

Python 提供了多种内置的容器类型,用于存储和组织数据。
内置的主要容器类型有:
–列表list、元组tuple、字符串str、集合set、字典dict等,
另外Python还在collections模块中提供了更多容器类型,例如:双端队列deque等。

5.1.1 常见容器类型

常见容器类型区别:

类型示例可变性有序性重复元素使用场景
列表(list)[1, 2, 3]可变有序允许有序数据集合,需要修改
集合(set){1, 2, 3}可变无序不允许唯一元素集合,集合运算
字典(dict){'a': 1, 'b': 2}可变无序键唯一键值对映射,快速查找
字节数组(bytearray)bytearray(b'hello')可变有序允许需要存储和处理二进制数据
范围(range)range(5)不可变有序允许表示数字序列,节省内存
字符串(str)'hello'不可变有序允许文本处理,字符序列
元组(tuple)(1, 2, 3)不可变有序允许固定数据集合,字典键
字节串(bytes)b'hello'不可变有序允许不可变二进制数据
# ------------------可变容器-----------------------# 列表listDemo=[1,2,3,4,5,3,4,5]print(f"列表{listDemo}")listDemo.append(6)print(f"追加元素6之后列表{listDemo}")listDemo[0]=10print(f"修改[0]为10之后列表{listDemo}")print()# 集合setDemo={1,2,3,4,5,3,4,5}print(f"集合{setDemo}")setDemo.add(6)print(f"添加元素6之后集合{setDemo}")setDemo.remove(3)print(f"删除元素3之后集合{setDemo}")print()# 字典dictDemo={"name":"Irene","age":18}print(f"字典{dictDemo}")dictDemo["sex"]="female"print(f"修改字典之后字典{dictDemo}")deldictDemo["age"]print(f"删除字典的age之后字典{dictDemo}")print()# 字节数组bytearrayDemo=bytearray(b'hello')print(f"字节数组{bytearrayDemo}")bytearrayDemo[0]=65print(f"修改字节数组[0]元素之后字节数组{bytearrayDemo}")print()
# ------------------不可变容器-----------------------# 范围rangeDemo=range(1,10)print(f"{rangeDemo}遍历",end=":")foriinrangeDemo:print(i,end=" ")print("\n")# rangeDemo[0]=100 # 不可修改,也没有提供修改元素的方法# 字符串stringDemo="Irene"print(f"字符串{stringDemo}")stringDemo=stringDemo.replace('r','a');# 原对象不可修改,返回新对象print(f"替换字符串r为a之后字符串{stringDemo}")print()# 元组tupleDemo=(1,2,3,4,5)print(f"元组{tupleDemo}")# tupleDemo[0] = 10 # 不可修改,也没有提供修改元素的方法print()# 字节bytesDemo=b'Irene'print(f"字节串{bytesDemo}")bytesDemo=bytesDemo.replace(b'r',b'a')print(f"替换字节串r为a之后字节串{bytesDemo}")print()# 冻结集合frozensetDemo=frozenset([1,2,3,4,5])print(f"冻结集合{frozensetDemo}")# frozensetDemo.add(6) # 冻结集合不可修改,也没有提供修改元素的方法

5.1.2 容器通用基础操作

  • 检查元素x是否为容器中的成员:x in container
  • 获取容器的长度:len(container)
  • 遍历容器:for x in container:
  • 容器:找最大值max(container)、最小值min(container)
  • 容器元素求累加和:sum(container)要求元素是数值类型
""" 1、容器的通用操作: - 检查成员是否为容器中的元素:x in sequence - 获取容器的长度:len(sequence) - 遍历容器:for x in sequence : - 容器找最大值max(sequence)、最小值min(sequence) - 容器元素求累加和:sum(container) 要求元素是数值类型 """print("-"*20,"容器之列表list类型","-"*20)nums=[1,2,3,4,5]print("nums:",nums)print("4在列表中吗?",4innums)print("列表的长度是:",len(nums))fornuminnums:print(num)print("列表中的最大值是:",max(nums))print("列表中的最小值是:",min(nums))print("元素的累加和是:",sum(nums))# 要求元素是数值类型print("-"*20,"容器之集合set类型","-"*20)words={"hello","world","python","atguigu"}print("words:",words)print("hello在集合中吗?","hello"inwords)print("集合的长度是:",len(words))forwordinwords:print(word)print("集合中的最大值是:",max(words))print("集合中的最小值是:",min(words))

5.2 序列类型

说明:序列(sequence)类型是有序的容器,支持索引访问。常见的序列类型包括:
----列表(List)、字符串(String)、元组(Tuple)等

元素:有序、可重复

5.2.1 序列类型通用的操作

  • 根据索引方式访问序列的元素:例如sequence[0]
  • 通过切片方式访问序列的元素:例如sequence[1:3]
    • [ start : end ],步长为1,复制[start, end)范围的元素。start缺省表示从0开始,end缺省表示到末尾。
    • [start :: step],start是起始下标。步长为step的绝对值。step为正数,表示正序,start缺省表示从0开始。step为负数,表示倒序,start缺省表示从末尾开始。
  • 获取元素x的索引:sequence.index(x)
  • 序列拼接相加:sequence1 + sequence2
  • 序列乘法:sequence1 * n
  • 元素x数量统计:sequence.count(x)
  • 遍历列表元素:x代表元素,i代表元素索引,sequence代表序列
    • for x in sequence
    • for i in range(len(sequence))
    • for i,x in enumerate(sequence)
words=["hello","world","python","atguigu","ai"]# 访问元素# 正序索引:索引从0开始# 倒序索引:索引从-1开始# 根据访问单个元素print("words[0]:",words[0])print("words[-1]:",words[-1])# 获取元素索引print("words.index('atguigu'):",words.index("atguigu"))# 切片print("words[1:3]:",words[1:3])print("words[:3]:",words[:3])print("words[3:]",words[3:])print("words[1:-1]",words[1:-1])# 序列相加,拼接words=words+[6,7]print("words + [6,7]:",words)words=words*2# 列表重复2次print("words * 2:",words)# 元素数量统计(元素可重复)print("words.count(5):",words.count(5))# 遍历forwordinwords:print(word)foriinrange(len(words)):print(f"第{i+1}个单词{words[i]}")fori,wordinenumerate(words):print(f"第{i+1}个单词{word}")

5.2.2 列表(有序可变[])

  • 列表是一个可变的集合,是一个元素有序、可重复的序列。
  • 列表使用 [] 定义,数据之间使用 , 分隔。
  • 列表中每个元素都有对应的位置值,称为索引或下标,
    -索引值:从左往右从0开始逐个向后递增,从右往左从-1开始逐个向前递减。
  • 列表中元素可以是不同的类型。

1、创建列表
# 创建列表list_demo1=[10,20,30,40,50]# []代表列表print("list_demo1:",list_demo1)list_demo2=list(range(10))# 使用range创建列表print("list_demo2:",list_demo2)list_demo3=list("hello world")# 字符串转列表print("list_demo3:",list_demo3)list_demo4=list()# 空列表print("list_demo4:",list_demo4)
2、容器、序列通用操作
# 检查成员是否为列表中的元素listDemo=[10,20,30,40,50]print(f"10 in{listDemo}:",10inlistDemo)# Trueprint(f"60 in{listDemo}:",10inlistDemo)# False# 获取列表长度print("列表的长度",len(listDemo))# 访问列表元素print("listDemo[0]:",listDemo[0])# 获取索引[0]的元素10print("listDemo[-2]:",listDemo[-2])# 获取索引[-2]的元素40# 列表切片listDemo=[10,20,30,40,50]print(listDemo[:])# 复制整个列表print(listDemo[2:])# 复制索引[2]到末尾的所有元素print(listDemo[:-2])# 复制开头到索引[-2](不含)的所有元素print(listDemo[1:-2])# 复制索引[1]到索引[-2](不含)的所有元素print(listDemo[::2])# 从头开始,步长为2获取元素print(listDemo[::-2])# 从尾开始,步长为2倒序获取元素print(listDemo[1::2])# 从[1]开始,步长为2获取元素print(listDemo[-2::-2])# 从[-2]开始,步长为2倒序获取元素# 遍历列表# 方式一:直接遍历元素listDemo=[10,20,30,40,50]print("列表遍历",end=":")fornuminlistDemo:print(num,end=" ")print()# 方式二:通过索引遍历元素listDemo=[10,20,30,40,50]print("列表遍历",end=":")foriinrange(len(listDemo)):print(listDemo[i],end=" ")print()# 方式三:使用enumerate()同时获取下标和元素listDemo=[10,20,30,40,50]print("列表遍历",end=":")fori,numinenumerate(listDemo):print(f"{i}={num}",end=" ")print()# 列表相加/拼接one=[1,2,3]two=['a','b','c']three=one+two# 列表相加print(f"{one}+{two}={three}")# [1, 2, 3] + ['a', 'b', 'c'] = [1, 2, 3, 'a', 'b', 'c']# 列表相乘/重复listDemo1=[10,20,30]listDemo2=listDemo1*3print(f"{listDemo1}* 3 ={listDemo2}")# [10, 20, 30] * 3 = [10, 20, 30, 10, 20, 30, 10, 20, 30]# 列表统计listDemo=[3,5,8,6,3,3,9,3,7]print(f"列表{listDemo}的最大值:",max(listDemo))print(f"列表{listDemo}的最小值:",min(listDemo))print(f"列表{listDemo}元素之和:",sum(listDemo))#只适用于元素是数值类型print(f"列表{listDemo}中3的数量:",listDemo.count(3))
3、向列表添加元素
# 列表添加元素listDemo=[10,20,30,40,50]listDemo.append(60)# 末尾追加元素listDemo.insert(1,70)# 指定位置插入元素,例如在[1]位置插入70print(listDemo)# [10, 70, 20, 30, 40, 50, 60]
4、删除列表元素
# 列表删除元素listDemo=[10,20,30,40,50,60,70,80,90,100]print(f"删除之前列表:{listDemo}")# 方式一:指定下标删除元素dellistDemo[1]print(f"删除[1]元素之后列表:{listDemo}")# 方式二:通过切片删除元素dellistDemo[1:4]print(f"删除[1:4]元素之后列表:{listDemo}")# 方式三:使用remove()方法删除指定元素listDemo.remove(60)print(f"删除60元素之后列表:{listDemo}")# 方式四:使用pop()方法删除指定元素listDemo.pop(1)print(f"删除[1]元素之后列表:{listDemo}")# 列表清空listDemo.clear()print(f"清空列表之后列表:{listDemo}")
5、修改列表中的元素
# 列表元素修改# 方式一:通过下标修改单个元素listDemo=[10,20,30,40,50,60]print(f"修改之前列表:{listDemo}")listDemo[0]='a'print(f"替换[0]元素后列表:{listDemo}")# ['a', 20, 30, 40, 50, 60]# 方式二:通过切片修改多个元素listDemo[2:4]=['a',
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/25 13:15:16

rocketMQ proxy架构分析

介绍proxy 模块是 RocketMQ 5.x 的 无状态代理组件 ,核心思路是:对外提供 gRPC 协议(面向多语言客户端),对内把请求翻译成 Remoting 协议访问 Broker/Namesrv,并原生支持 pop 消费模型。它有两种部署模式&a…

作者头像 李华
网站建设 2026/8/25 13:10:44

商业计划书最容易被忽略的加分项:清晰的图表表达

你好,我是小索奇。 本文围绕“商业计划书最容易被忽略的加分项:清晰的图表表达”展开,重点说明如何用流程图、结构图和数据图提升内容表达效率。本文重点:明确问题、拆分逻辑、选择图表类型,并用清晰段落帮助读者快速获…

作者头像 李华
网站建设 2026/8/25 13:10:24

2026年靠谱冠层光合工具哪家好?这份实用测评指南帮你甄选

凌晨5点的麦田里,你还在扛着几十斤的同化箱蹲点测光合?好不容易密封好,一阵风刮来数据全乱;折腾一天测10个样本,数据还没法代表整个冠层的真实光合效率?2026年做冠层光合研究,选对工具能让你少走…

作者头像 李华
网站建设 2026/8/25 13:06:21

8英寸产能被AI挤占 2026年“选芯“逻辑正在重写

一、三重挤压:一颗MCU的涨价逻辑 如果说2025年的关键词是"复苏",那么2026年上半年,消费电子行业的主旋律只有两个字——成本。 从去年第四季度开始,晶圆代工产能告急,MCU芯片全线涨价5%15%。紧接着&#xff…

作者头像 李华
网站建设 2026/8/25 12:59:32

2026百度网盘下载慢怎么办?教你用PanDownload在线解析一键提速

在日常使用网络存储工具保存和获取文件时,很多人都会遇到传输进度缓慢、等待时间过长的问题。这种情况不仅影响工作效率,也十分影响使用心情。其实导致传输速度不理想的因素有很多,通过一些简单实用的排查和调整,就可以有效改善传…

作者头像 李华
网站建设 2026/8/25 12:55:35

2020拯救者R7000自己动手清灰换硅脂

自电脑买来以后就还没清过灰,电脑是大二那年买的,现在已经工作了(入职前想着现在电脑这么贵清一清灰在凑合用几年哈哈哈哈),本来想着去专业的地方去清,但是看网上说会有给你简单处理的情况,所以…

作者头像 李华