Python(6) -- 数据容器

1. 数据容器入门

  1. 什么是数据容器?

一种可以存储多个元素的Python数据类型

  1. Python有哪些数据容器?

list(列表)、tuple(元组)、str(字符串)、set(集合)、dict(字典)

它们各有特点,但都满足可容纳多个元素的特性。

2. 数据容器:list(列表)

2.1 列表的定义

  • 以 [] 作为标识
  • 列表内每一个元素之间用, 逗号隔开

**元素:**数据容器内的每一份数据

注:

列表可以一次存储多个数据,且可以为不同的数据类型,支持嵌套

2.2 列表的下标索引

列表的下标索引:

  • 列表的每一个元素,都有编号称之为下标索引
  • 从前向后的方向,编号从0开始递增
  • 从后向前的方向,编号从-1开始递减

如何通过下标索引取出对应位置的元素呢? 列表[下标]

**注:**标索引的取值范围,超出范围无法取出元素,并且会报错

2.3 列表的常用操作

|--------|-------------------|------------------------------|
| 编号 | 使用方式 | 作用 |
| 1 | 列表.append(元素) | 向列表中追加一个元素 |
| 2 | 列表.extend(容器) | 将数据容器的内容依次取出,追加到列表尾部 |
| 3 | 列表.insert(下标, 元素) | 在指定下标处,插入指定的元素 |
| 4 | del 列表[下标] | 删除列表指定下标元素 |
| 5 | 列表.pop(下标) | 删除列表指定下标元素 |
| 6 | 列表.remove(元素) | 从前向后,删除此元素第一个匹配项 |
| 7 | 列表.clear() | 清空列表 |
| 8 | 列表.count(元素) | 统计此元素在列表中出现的次数 |
| 9 | 列表.index(元素) | 查找指定元素在列表的下标 找不到报错ValueError |
| 10 | len(列表) | 统计容器内有多少元素 |

2.3.1 列表的特点:
  • 可以容纳多个元素(上限为2**63-1、9223372036854775807个)
  • 可以容纳不同类型的元素(混装)
  • 数据是有序存储的(有下标序号)
  • 允许重复数据存在
  • 可以修改(增加或删除元素等)

3. list(列表)的遍历

**遍历 :**将容器内的元素依次取出,并处理。

遍历列表的元素: 可以使用whilefor循环

for循环的语法:

for循环和while对比:

  • for循环更简单,while更灵活
  • for用于从容器内依次取出元素并处理,while用以任何需要循环的场景

4. 数据容器:tuple(元组)

4.1 元组的定义

元组定义:定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型。

元组也支持嵌套:

注意事项:

注意:元组只有一个数据,这个数据后面要添加逗号

4.2 元组的操作

|--------|---------|---------------------------|
| 编号 | 方法 | 作用 |
| 1 | index() | 查找某个数据,如果数据存在返回对应的下标,否则报错 |
| 2 | count() | 统计某个数据在当前元组出现的次数 |
| 3 | len(元组) | 统计元组内的元素个数 |

注意:元组由于不可修改的特性,所以其操作方法非常少。

4.3 元组的特点

  • 可以容纳多个数据
  • 可以容纳不同类型的数据(混装)
  • 数据是有序存储的(下标索引)
  • 允许重复数据存在
  • 不可以修改(增加或删除元素等)
  • 支持for循环

5. 数据容器:str(字符串)

5.1 字符串

字符串可以看做是字符的容器,支持下标索引等特性

5.2 字符串的操作

|--------|----------------------------|----------------------------------------|
| 编号 | 操作 | 说明 |
| 1 | 字符串[下标] | 根据下标索引取出特定位置字符 |
| 2 | 字符串.index(字符串) | 查找给定字符的第一个匹配项的下标 |
| 3 | 字符串.replace(字符串1, 字符串2) | 将字符串内的全部字符串1,替换为字符串2 不会修改原字符串,而是得到一个新的 |
| 4 | 字符串.split(字符串) | 按照给定字符串,对字符串进行分隔 不会修改原字符串,而是得到一个新的列表 |
| 5 | 字符串.strip() 字符串.strip(字符串) | 移除首尾的空格和换行符或指定字符串 |
| 6 | 字符串.count(字符串) | 统计字符串内某字符串的出现次数 |
| 7 | len(字符串) | 统计字符串的字符个数 |

5.3 字符串的特点

  • 只可以存储字符串
  • 长度任意(取决于内存大小)
  • 支持下标索引
  • 允许重复字符串存在
  • 不可以修改(增加或删除元素等)
  • 支持for循环

6. 数据容器 (序列)的切片

序列: 内容连续、有序,支持下标索引的一类数据容器

序列分类: 列表、元组、字符串

切片: 序列[起始:结束:步长]

  • 起始可以省略,省略从头开始
  • 结束可以省略,省略到尾结束
  • 步长可以省略,省略步长为1(可以为负数,表示倒序执行)

7. 数据容器:set(集合)

7.1 集合的定义

基本语法:

去重且无序

7.2 集合的操作

|--------|----------------------------|---------------------------------|
| 编号 | 操作 | 说明 |
| 1 | 集合.add(元素) | 集合内添加一个元素 |
| 2 | 集合.remove(元素) | 移除集合内指定的元素 |
| 3 | 集合.pop() | 从集合中随机取出一个元素 |
| 4 | 集合.clear() | 将集合清空 |
| 5 | 集合1.difference(集合2) | 得到一个新集合,内含2个集合的差集 原有的2个集合内容不变 |
| 6 | 集合1.difference_update(集合2) | 在集合1中,删除集合2中存在的元素 集合1被修改,集合2不变 |
| 7 | 集合1.union(集合2) | 得到1个新集合,内含2个集合的全部元素 原有的2个集合内容不变 |
| 8 | len(集合) | 得到一个整数,记录了集合的元素数量 |

7.3 集合的特点

  • 可以容纳多个数据
  • 可以容纳不同类型的数据(混装)
  • 数据是无序存储的(不支持下标索引)
  • 允许重复数据存在
  • 可以修改(增加或删除元素等)
  • 支持for循环

8. 数据容器:dict(字典、映射)

8.1 字典的定义

字典的定义,同样使用**{}** ,不过存储的元素是一个个的:键值对

字典可以提供基于Key检索Value的场景实现

如下语法:

注意:

  • 使用{}存储原始,每一个元素是一个键值对
  • 每一个键值对包含Key和Value(用冒号分隔)
  • 键值对之间使用逗号分隔
  • Key和Value可以是任意类型的数据(key不可为字典)
  • Key不可重复,重复会对原有数据覆盖

8.2 字典的操作

|--------|-------------------|------------------------------|
| 编号 | 操作 | 说明 |
| 1 | 字典[Key] | 获取指定Key对应的Value值 |
| 2 | 字典[Key] = Value | 添加或更新键值对 |
| 3 | 字典.pop(Key) | 取出Key对应的Value并在字典内删除此Key的键值对 |
| 4 | 字典.clear() | 清空字典 |
| 5 | 字典.keys() | 获取字典的全部Key,可用于for循环遍历字典 |
| 6 | len(字典) | 计算字典内的元素数量 |

注意:新增和更新元素的语法一致,如果Key不存在即新增,如果Key存在即更新(Key不可重复)

8.3 字典的特点

  • 可以容纳多个数据
  • 可以容纳不同类型的数据
  • 每一份数据是KeyValue键值对
  • 可以通过Key获取到Value,Key不可重复(重复会覆盖)
  • 不支持下标索引
  • 可以修改(增加或删除更新元素等)
  • 支持for循环,不支持while循环

9. 数据容器的通用操作

9.1 数据容器特点对比

|------|------------------|-------------------|-----------|-------------|-----------------------------------|
| | 列表 | 元组 | 字符串 | 集合 | 字典 |
| 元素数量 | 支持多个 | 支持多个 | 支持多个 | 支持多个 | 支持多个 |
| 元素类型 | 任意 | 任意 | 仅字符 | 任意 | Key:Value Key:除字典外任意类型 Value:任意类型 |
| 下标索引 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
| 重复元素 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
| 可修改性 | 支持 | 不支持 | 不支持 | 支持 | 支持 |
| 数据有序 | 是 | 是 | 是 | 否 | 否 |
| 使用场景 | 可修改、可重复的一批数据记录场景 | 不可修改、可重复的一批数据记录场景 | 一串字符的记录场景 | 不可重复的数据记录场景 | 以Key检索Value的数据记录场景 |

9.2 容器通用功能

|------------------------------|--------------------------------|
| 功能 | 描述 |
| 通用for循环 | 遍历容器(字典是遍历key) |
| max | 容器内最大元素 |
| min() | 容器内最小元素 |
| len() | 容器元素个数 |
| list() | 转换为列表 |
| tuple() | 转换为元组 |
| str() | 转换为字符串 |
| set() | 转换为集合 |
| sorted(序列, [reverse=True]) | 排序,reverse=True表示降序 得到一个排好序的列表 |

9.3 字符串大小比较

字符串是按位比较,也就是一位位进行对比,只要有一位大,那么整体就大。通过ASCII码表,确定字符对应的码值数字来确定大小

相关推荐
火山kim5 分钟前
一文速通C#(网页资源版)
开发语言·c#
冬天vs不冷12 分钟前
Java基础(十):关键字static详解
java·开发语言
小蒜学长19 分钟前
基于Django的论坛系统设计与实现(代码+数据库+LW)
java·spring boot·后端·python·django
云霄星乖乖的果冻23 分钟前
anaconda下载与pycharm解析器配置
ide·python·pycharm
飞翔的佩奇28 分钟前
【完整源码+数据集+部署教程】PHC桩实例分割系统源码和数据集:改进yolo11-Faster-EMA
python·yolo·计算机视觉·目标跟踪·yolo11·phc桩实例分割
lingchen190633 分钟前
MATLAB矩阵及其运算(四)矩阵的运算及操作
开发语言·matlab·矩阵
程序员小范35 分钟前
TIOBE 8月编程语言榜深度解析:Python占比突破26%,Perl成最大黑马
开发语言·python·perl
是三好36 分钟前
单例模式(Singleton Pattern)
java·开发语言·算法·单例模式
王伯安呢1 小时前
Python 环境配置初学者指南:从安装到 Pycharm 项目配置
开发语言·python·pycharm·环境配置·初学者
1uther1 小时前
Unity核心概率④:MonoBehavior
开发语言·游戏·unity·c#·游戏引擎