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码表,确定字符对应的码值数字来确定大小

相关推荐
天才测试猿4 小时前
Jmeter+ant+jenkins接口自动化测试框架
自动化测试·软件测试·python·jmeter·职场和发展·jenkins·接口测试
carver w5 小时前
c++ 容器vector基础
开发语言·c++
芥子沫6 小时前
VSCode添加Python、Java注释技巧、模板
开发语言·前端·javascript
小陈又菜7 小时前
【C++】类和对象--类中6个默认成员函数(2) --运算符重载
开发语言·c++·运算符重载
yuezhilangniao7 小时前
关于开发语言的一些效率 从堆栈角度理解一部分c java go python
java·c语言·开发语言
Ares-Wang7 小时前
Node.js 》》bcryptjs 加密
开发语言·javascript·node.js
计算机毕业编程指导师7 小时前
毕业设计选题推荐之基于Spark的在线教育投融数据可视化分析系统 |爬虫|大数据|大屏|预测|深度学习|数据分析|数据挖掘
大数据·hadoop·python·数据挖掘·spark·毕业设计·在线教育投融
vvilkim7 小时前
深入理解Java访问修饰符:封装的艺术
java·开发语言
最爱吃南瓜7 小时前
JS逆向实战案例之----【通姆】252个webpack模块自吐
开发语言·javascript·爬虫·webpack·js逆向·算法模拟