python中的数据容器

简介: python中的数据容器

合集 - Python(10)

1.python中的数据容器

  • 第六章:Python数据容器
  • 数据容器入门
  • 什么是数据容器
  • 一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素,每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。
  • 根据特点的不同分类数据容器(是否支持重复元素、是否可以修改、是否有序等)
  • 列表(list)
  • 元组(tuple)
  • 字符串(str)
  • 集合(set)
  • 字典(dict)
  • 数据容器:list(列表)
  • 列表的定义
  • 基本语法:
  • 列表内的每一份数据,称之为元素
  • 以[]作为标识
  • 列表内每一个元素之间用,逗号隔开
  • 注意:列表可以一次存储多个数据,且可以为不同的数据类型,支持嵌套
  • 列表的下标索引
  • 列表的每一个元素,都有编号称之为下标索引;从前向后的方向,编号从0开始递增;从后向前的方向,编号从-1开始递减
  • 正向索引
  • 反向索引
  • 嵌套索引
  • 注意下标索引的取值范围,超出范围无法取出元素,并且会报错
  • 列表的常用操作
  • 查找某元素的下标
  • 功能:查找指定元素在列表的下标,如果找不到,报错ValueError
  • 语法:列表.index(元素)
  • index就是列表对象(变量)内置的方法(函数)

  • 列表的修改功能
  • 语法:列表[下标]=值

  • 插入元素
  • 语法:列表.insert(下标,元素),在指定的下标位置,插入指定的元素

  • 追加元素
  • 语法:列表.append(元素),将指定元素,追加到列表的尾部

  • 追加元素2
  • 语法:列表.extend(其他数据容器),将其他数据容器的内容取出,依次追加到列表尾部

  • 删除元素
  • 语法1:del 列表[下标]
  • 语法2:列表.pop(下标),可将删除的元素返回

  • 修改某元素在列表中的第一个匹配项
  • 语法:列表remove(元素)

  • 清空列表内容
  • 语法:列表.clear()

  • 统计某元素在列表内的数量
  • 语法:列表.count(元素)

  • 统计列表内,有多少元素
  • 语法:len(列表)
  • image.png
  • list(列表)的遍历
  • while循环


  • for循环
  • image.png

  • 两者对比
  • 在循环控制上
  • while循环可以自定循环条件,并自行控制
  • for循环不可以自定循环条件,只可以一个个从容器内取出数据
  • 在无限循环上
  • while循环可以通过条件控制做到无限循环
  • for循环理论上不可以,因为被遍历的容器容量不是无限的
  • 在使用场景上
  • while循环适用于任何想要循环的场景
  • for循环适用于,遍历数据容器或简单的固定次数循环场景
  • 数据容器:tuple(元组)
  • 元组的定义
  • 定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型。

  • 元组也支持嵌套
  • a3132c47e8330961c61bf503cc27c7a7_46d61c29-749f-4e11-a723-4f8d0d2287eb-3214415.jpg
  • 注意事项:元组只有一个数据,这个数据后面要加添加逗号,不加逗号的话就变成了字符串类型了
  • 元组的操作
  • index():查找某个数据,如果数据存在返回对应的下标,否则报错
  • count():统计某个数据在当前元组出现的次数
  • len(元组):统计元组内的元素个数


  • 1727663862039.png
  • 578319a0e17f11ecacf02f4100fa5bd6_2a8a3e55-d40d-4552-a6ee-69ec8958d1aa-3214415.jpg
  • 元组的特点
  • 可以容纳多个数据
  • 可以容纳不同类型的数据(混装)
  • 数据是有序存储的(下标索引)
  • 允许重复数据存在
  • 不可以修改(增加或删除元素等)
  • 支持for循环
  • 1727663800439.png
  • 1727663759241.png
  • 1727663724723.png
  • 汇总表格
  • 2758b456d55c9bd3bba505b2719e7ebd_f502bae6-70e7-4602-8056-3a5ad1a5fe17-3214415.jpg
  • 字符串的遍历
  • 类似前面的列表和元组
  • 字符串的特点
  • 只可以存储字符串
  • 长度任意(取决于内存大小)
  • 支持下标索引
  • 允许重复字符串存在
  • 不可以修改(增加或删除元素等)
  • 支持for循环
  • 基本和列表、元组相同;不同与列表和元组的在于:字符串容器可以容纳的数据类型是单一的,只能是字符串类型;不同与列表,相同于元组的在于:字符串不可修改
  • 数据容器(序列)的切片
  • 什么是序列?
  • 序列是指:内容连续、有序,可使用下标索引的一类数据容器
  • 列表、元组、字符串都可以视为序列。
  • 525c765ab9516172f09fed83f9f7ed03_a76e7fad-5726-4577-a3a6-467fc54d9803-3214415.jpg
  • 998ebb7455c6621f0f0c72b284316b92_371dc76b-ff45-4d33-b1d4-8417937f938b-3214415.jpg
  • 序列的常用操作-切片
  • 序列支持切片,即:列表、元组、字符串,均支持进行切片操作
  • 切片:从一个序列中,取出一个子序列
  • 语法:序列[起始下标:结束下标:步长]
  • 表示从序列中,从指定位置开始,依次取出元素,到指定位置结束,得到一个新序列:
  • 起始下标表示从何处开始,可以留空,留空视作从头开始
  • 结束下标(不含)表示何处结束,可以留空,留空视作截取到结尾
  • 步长表示,依次取元素的间隔
  • 步长1表示,一个个取元素
  • 步长2表示,每次跳过1个元素取
  • 步长N表示,每次跳过N-1个元素取
  • 步长为负数表示,反向取(注意,起始下标和结束下标也要反向标记)
  • 注意:此操作不会影响序列本身,而是会得到一个新的序列(列表、元组、字符串)
  • 序列的切片演示
  • 4a75ccc17cde11bd39c2dfb3a65878c4_4d9ab1fc-fd12-44ea-8aa1-7dd393e8579c-3214415.jpg
  • image.png
  • 数据容器:set(集合)
  • 集合的定义
  • 基本语法: c49cfab5d6377464a56663378d3fae19_1e6e5537-1f83-4e35-a33a-6b4092f221bf-3214415.jpg
  • 特点:去重且无序(因为要对元素做去重处理,所以无法保证顺序和创建的时候一致)
  • 对比学习 89e889c872aef163468fa6e7aa1a09a5_30532211-e394-4eb5-b4d9-c2e8431c76c5-3214415.jpg
  • 集合的常用操作
  • 集合的常用操作-修改
  • 添加新元素
  • 语法:集合.add(元素)。将指定元素,添加到集合内
  • 结果:集合本身被修改,添加了新元素
  • 00e21ae8a997ad4e36f89ca92e0abd93_280c0997-3975-45be-b38b-371eaddd6ecd-3214415.jpg
  • 移除元素
  • 语法:集合.remove(元素),将指定元素,从集合内移除
  • 结果:集合本身被修改,移除了元素
  • 92ad00b9322f1de3ca2bfc5dc7913130_a5ab4e12-392b-4408-91e9-779f3d360982-3214415.jpg
  • 从集合中随机取出元素
  • 语法:集合.pop(),功能,从集合中随机取出一个元素
  • 结果:会得到一个元素的结果。同时集合本身被修改,元素被移除
  • 51f54f9a8c1d847b76469c6380af5206_117e66d2-7ee5-405b-b9d7-a7a7c1c2e7c4-3214415.jpg
  • 清空集合
  • 语法:集合.clear(),功能,清空集合
  • 结果:集合本身被清空
  • 49d05a7e5278f9bdb366e1a26ba7090c_a1d408d6-8ef5-41ad-8ebb-2df9a9c710f1-3214415.jpg
  • 取出2个集合的差集
  • 语法:集合1.difference(集合2),功能:取出集合1和集合2的差集(集合1有而集合2没有的)
  • 结果:得到一个新集合,集合1和集合2不变
  • 665c26e23302e650753f9383e8b01407_3dcf3afc-4b33-4339-9b00-fd6c1a77523d-3214415.jpg
  • 消除2个集合的差集
  • 语法:集合1.difference_update(集合2)
  • 功能:对比集合1和集合2,在集合1内,删除和集合2相同的元素。
  • 结果:集合1被修改,集合2不变
  • 6e747e739390315c16c38954eca0bf3e_cab6848f-0da0-4ae3-9a65-2adbd7d63981-3214415.jpg
  • 2个集合合并
  • 语法:集合1.union(集合2)
  • 功能:将集合1和集合2组合成新集合
  • 结果:得到新集合,集合1和集合2不变
  • f41c9927ed6a95ed5cfd7e30088450cb_a113da17-034e-4eef-bc20-a1c9c214da5d-3214415.jpg
  • 集合的常用操作 - 集合长度
  • 查看集合的元素数量
  • 语法:len(集合)
  • 功能:统计集合内有多少元素
  • 结果:得到一个整数结果
  • 5e9bff9b0e4db3438003a07179ecac83_4f9db2b6-e5df-4629-998d-f8db82efe451-3214415.jpg
  • 集合的常用操作 - for循环遍历
  • 要注意:集合不支持下标索引,所以也就不支持使用while循环。
  • eccbe4642ec963089be92c2b5ce61a7d_c2dd0768-1e4d-457d-a822-b20400646012-3214415.jpg
  • 集合常用功能总结
  • 30a090efae96b0f7c5b51cd7b87c9899_c5b6988a-3901-4305-8eb9-14b98ed17454-3214415.jpg
  • 集合的特点
  • 可以容纳多个数据
  • 可以容纳不同类型的数据
  • 数据是无序存储的(不支持下标索引)
  • 不允许重复数据存在
  • 可以修改(增加或删除元素等)
  • 支持for循环
  • 数据容器:dict(字典、映射)
  • 字典的定义
  • 字典的定义,同样使用{},不过存储的元素是一个个的:键值对
  • 使用{}存储元素,每一个元素都是一个键值对
  • 每一个键值对包含key和value(用冒号分隔)
  • 键值对之间使用逗号分隔
  • Key和Value可以是任意类型的数据(Key不可为字典)
  • Key不可重复,重复会对原有数据覆盖
  • 语法格式: image.png
  • 字典数据的获取
  • 字典同集合一样,不可以使用下标索引但是字典可以通过Key值来取得对应的Value
  • f1e25cd3d64d2e0b4bd0270af7dc0004_7268c5fb-c0a2-414f-a9e3-63cbbd691185-3214415.jpg
  • 字典的嵌套
  • 字典的Key和Value可以是任意数据类型(Key不可为字典),字典是可以嵌套的
  • 39b10dce82b5cf0dc1076092025dae82_0d09f247-2df1-4189-86b4-c0edd396066f-3214415.jpg
  • 嵌套字典的内容获取
  • f411e80b9be8f9ba1e685931cb26a494_e53399d4-d5c7-408b-98a2-2a34f32996af-3214415.jpg
  • 字典的注意事项
  • 键值对Key和Value可以是任意类型(Key不可为字典)
  • 字典内的Key不允许重复,重复添加等同于覆盖原有数据
  • 字典不可用下标索引,而是通过Key检索Value
  • 字典的常用操作
  • 新增元素
  • 语法:字典[Key] = Value,结果:字典被修改,新增了元素
  • image.png
  • 更新元素
  • 语法:字典[Key] = Value,结果:字典被修改,元素被更新
  • 注意:字典Key不可以重复,所以对已存在的Key执行上述操作,就是更新Value值
  • a622709535cd1ff6cb571a6334d856d4_dcf892e5-8edd-4e02-9da4-61c695c99034-3214415.jpg
  • 删除元素
  • 语法:字典.pop(Key),结果:获得指定Key的Value,同时字典被修改,指定Key的数据被删除
  • 7344995919b28498eaf2e820054eeb99_55fc70f4-27d9-4f36-b08f-3048a437482c-3214415.jpg
  • 清空字典
  • 语法:字典.clear(),结果:字典被修改,元素被清空
  • e9e78aa044c9e56d678fd027c4650c73_fe89be95-3f7d-4b4f-839d-515a0c9fea09-3214415.jpg
  • 获取全部的key
  • 语法:字典.keys(),结果:得到字典中的全部Key
  • d8f8cdc7a3eec82f2a8608bae4c75d23_b62712fb-fb04-402a-8f98-312bfe9015f5-3214415.jpg
  • 遍历字典
  • 语法:for key in 字典.keys()

  • 运行结果 e14c2b6d36edc285c6f264a36dd983a9_68bc725a-6222-4c68-9efb-65c050bb1b9a-3214415.jpg
  • 计算字典内的全部元素(键值对)数量
  • 语法:len(字典)
  • 结果:得到一个整数,表示字典内元素(键值对)的数量
  • bc8612c29fc283f2f72029757d061df7_acb1a60b-0f06-4efa-b65e-db5f7409de8c-3214415.jpg
  • 字典常用操作总结
  • 5e6caed1631567e050558f15261160f0_ed2b577a-d5bd-4415-8021-bebafe779fd9-3214415.jpg
  • 字典的特点
  • 可以容纳多个数据
  • 可以容纳不同类型的数据
  • 每一根数据是KeyValue键值对
  • 可以通过Key获取到Value,Key不可重复(重复会覆盖)
  • 不支持下标索引
  • 可以修改(增加或删除更新元素等)
  • 支持for循环,不支持while循环
  • 扩展:数据容器对比总结
  • 572b463a17397b999adf7368cde2a4ed_e34f98f8-f71e-4c85-b944-4e672f1386fb-3214415.jpg
  • 数据容器的通用操作
  • 数据容器的通用操作 - 遍历
  • 5类数据容器都支持for循环遍历
  • 列表、元组、字符串支持while循环,集合、字典不支持(无法下标索引)
  • 数据容器的通用统计功能
  • len(容器):统计容器的元素个数
  • max(容器):统计容器的最大元素
  • min(容器):统计容器的最小元素
  • 容器的通用转换功能
  • 47ace5e6101fa9dca7f758e89b7d6247_c5557a73-4982-4e35-9325-83b8d6612c4b-3214415.jpg
  • 容器通用排序功能
  • sorted(容器, [reverse=True]):将给定容器进行排序
  • 注意,排序后都会得到list(列表)对象
  • 容器通用功能总览
  • efb791d0f6a672bd582014e7c224685b_222bd73f-2165-4dbf-b30a-4d86c89a9c40-3214415.jpg
  • 扩展:字符串的大小比较
  • 字符串进行比较就是基于数字的码值(ASCII)大小进行比较的。
  • ASCII码表
  • 字符串是按位比较,也就是一位位进行对比,只要有一位大,那么整体就大。
相关文章
|
22天前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
20天前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
1月前
|
开发者 Docker Python
从零开始:使用Docker容器化你的Python Web应用
从零开始:使用Docker容器化你的Python Web应用
36 1
|
1月前
|
传感器 物联网 开发者
使用Python读取串行设备的温度数据
本文介绍了如何使用Python通过串行接口(如UART、RS-232或RS-485)读取温度传感器的数据。详细步骤包括硬件连接、安装`pyserial`库、配置串行端口、发送请求及解析响应等。适合嵌入式系统和物联网应用开发者参考。
48 3
|
1月前
|
图形学 Python
SciPy 空间数据2
凸包(Convex Hull)是计算几何中的概念,指包含给定点集的所有凸集的交集。可以通过 `ConvexHull()` 方法创建凸包。示例代码展示了如何使用 `scipy` 库和 `matplotlib` 绘制给定点集的凸包。
29 1
|
1月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
1月前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
1月前
|
数据采集 JavaScript 程序员
探索CSDN博客数据:使用Python爬虫技术
本文介绍了如何利用Python的requests和pyquery库爬取CSDN博客数据,包括环境准备、代码解析及注意事项,适合初学者学习。
80 0
|
2月前
|
数据可视化 算法 JavaScript
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
本文探讨了如何利用图论分析时间序列数据的平稳性和连通性。通过将时间序列数据转换为图结构,计算片段间的相似性,并构建连通图,可以揭示数据中的隐藏模式。文章介绍了平稳性的概念,提出了基于图的平稳性度量,并展示了图分区在可视化平稳性中的应用。此外,还模拟了不同平稳性和非平稳性程度的信号,分析了图度量的变化,为时间序列数据分析提供了新视角。
77 0
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
|
1月前
|
数据采集 存储 分布式计算
超酷炫Python技术:交通数据的多维度分析
超酷炫Python技术:交通数据的多维度分析