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 sequencefor 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',

相关新闻

React Hooks 为什么不能在条件分支/循环中调用?

React Hooks 为什么不能在条件分支/循环中调用?

React Hooks 为什么不能在条件分支/循环中调用?一、核心思路(一句话)React Hooks 通过"调用顺序(位置索引)"在 Fiber 节点的单向链表上匹配状态,而非通过名称或 key——任何改变调用顺序的写法都…

2026/8/26 16:11:49 阅读更多 →
PlugLayer MCP Server MCP 服务说明文档

PlugLayer MCP Server MCP 服务说明文档

1. 服务概述一句话简介:通过自然语言部署和管理您的基础设施,支持任何MCP兼容的AI助手服务名称:PlugLayer MCP Server版本号:最新版本开发者/提供方:pluglayer协议类型:MCP (Model Context Protocol)2. 核心…

2026/8/26 15:54:32 阅读更多 →
深入浅出Function Calling③-零基础保姆级教程

深入浅出Function Calling③-零基础保姆级教程

第 5 章:工程细节 —— 让工具调用达到生产级5.1 工具描述写作军规(模型乱调工具时,90% 先改这里)军规BadGood说清"何时用""查天气""查询城市当前实时天气。用户问天气/气温/穿衣/带伞时使用&#xff1b…

2026/8/26 15:49:13 阅读更多 →

最新新闻

Go-Channel底层结构深度解析与select多路复用机制

Go-Channel底层结构深度解析与select多路复用机制

Go Channel底层结构深度解析与select多路复用机制 文章导语 Channel是Go并发编程的灵魂——“不要通过共享内存来通信,而要通过通信来共享内存”。但Channel的底层实现远比表面复杂:环形缓冲区、等待队列、goroutine的阻塞/唤醒、select的随机性……本文…

2026/8/26 17:37:09 阅读更多 →
Go-Goroutine泄漏检测与预防从pprof到生产监控

Go-Goroutine泄漏检测与预防从pprof到生产监控

Go Goroutine泄漏检测与预防从pprof到生产监控 文章导语 Goroutine泄漏是Go应用中最隐蔽的性能问题。一个泄漏的goroutine不仅消耗内存(每个约2-8KB),还会占用文件描述符、数据库连接等系统资源。随着时间推移,泄漏的goroutine会逐…

2026/8/26 17:37:09 阅读更多 →
跨内核实时更新:如何实现 hugetlbfs 巨页的无缝保留与恢复?

跨内核实时更新:如何实现 hugetlbfs 巨页的无缝保留与恢复?

随着云原生和虚拟化基础设施的演进,在不中断宿主机上运行的租户虚拟机(VM)的前提下完成宿主机内核升级(Host Kernel Live Update),已从“锦上添花”变成了生产环境的刚需。尽管 Linux 内核在 6.19 开发周期…

2026/8/26 17:37:09 阅读更多 →
LangChain 快速上手:从接入大模型到 LCEL 链式调用(一文搞懂)

LangChain 快速上手:从接入大模型到 LCEL 链式调用(一文搞懂)

很多人刚接触 LangChain,照着官方文档写完 import 就开始迷糊:API key 要不要写死在代码里?ChatOpenAI、HumanMessage、StrOutputParser 到底都是什么?为什么 model | parser 就能把两个东西串成一条链? 这篇文章把官方…

2026/8/26 17:37:09 阅读更多 →
Dify实战-定时触发-工作流到点自动跑和三个必须知道的坑

Dify实战-定时触发-工作流到点自动跑和三个必须知道的坑

Dify 定时触发(trigger-schedule)实测:工作流到点自动跑,和三个必须知道的坑基于 Dify 1.16.1 实测(2026-08)📖 摘要:日报自动生成、看板定时刷新、巡检定时告警——这些「到点自动跑…

2026/8/26 17:37:09 阅读更多 →
CSP-J 运算符优先级专题训练题单

CSP-J 运算符优先级专题训练题单

本练习共14题,覆盖CSP-J初赛中运算符优先级的全部核心题型。每道题均附有答案与详细解析,方便教师讲解或学生自查。🌟 第一梯队:基础优先级判断(第1-4题)目标:熟记C运算符优先级顺序&#xff0c…

2026/8/26 17:36:09 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/25 10:31:12 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →