数据容器入门
Python中的数据容器:
一个可以容纳多份数据的数据类型,容纳的每一份元素称之为1个元素,每个元素可以是任意类型的数据,如字符串、数字、布尔等。
数据容器根据特点的不同,如:
- 是否支持重复元素
- 是否可以修改
- 是否有序,等
分为5类,分别是:列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)
数据容器:list(列表)
列表的定义
基本语法
1 | # 字面量 |
注意:
列表的每一个元素,称之为元素
以 [] 作为标识
列表内每个元素之间用逗号隔开
列表可以一次存储多个数据,且可以为不同的数据类型,支持嵌套
列表的下标索引
列表的每个元素都有其位置下标索引,从前向后的方向,从0开始,依次递增,如下:
1 | # 语法:列表[下标索引] |
反向索引,从后往前的方向,从-1开始递减,如下:
1 | # 语法:列表[下标索引] |
嵌套列表的下标索引,同上,写两层即可
1 | # 语法 列表[下标][下标] |
列表的常用操作
方法:在Python中,如果将函数定义为class(类)的成员,那么函数会称之为方法(写在类里的函数成为方法),使用“.”访问
列表的查询功能——index()
查询某元素下标
功能:查找指定元素在列表的下标,如果找不到,报错ValueError
语法:列表.index(元素)
修改元素
修改特定位置(索引)的元素值
语法:列表[下标] = 值
通过如上语法即可直接对指定位置的值进行重新赋值
插入元素
语法:列表.insert(下标,元素)
在指定的下标位置,插入指定元素,该位置原来的元素和后续元素,依次向后移
追加元素1
语法:列表.append(元素)
将元素追加到列表的尾部
追加元素2
语法:列表.extend(其他数据容器)
将其他数据容器的内容取出,依次追加到列表尾部
删除元素
语法1:del 列表[下标]
语法2:列表.pop(下标)
语法3:列表.remove(元素)
方法pop()不仅可以删除元素,还会返回被删除的元素,remove()是删除某元素在列表的第一个匹配项
清空列表
语法:列表.clear()
清空列表内容
统计某元素在列表内的数量
语法:列表.count(元素)
统计列表中有多少元素
语法:len(列表)
可以得到一个int型的数字,表示列表内的元素数量
总结
| 功能 | 语法 | 描述 |
|---|---|---|
| 查询某元素下标 | 列表.index(元素) | 查找指定元素在列表的下标,如果找不到,报错ValueError |
| 修改元素值 | 列表[下标] = 值 | 直接对指定位置的值进行重新赋值 |
| 插入元素 | 列表.insert(下标,元素) | 在指定的下标位置,插入指定元素,该位置原来的元素和后续元素,依次向后移 |
| 追加元素 | 列表.append(元素) | 将元素追加到列表的尾部 |
| 追加元素 | 列表.extend(其他数据容器) | 将其他数据容器的内容取出,依次追加到列表尾部 |
| 删除元素 | del 列表[下标] | 删除下标位置上的元素 |
| 删除元素 | 列表.pop(下标) | 方法pop()不仅可以删除元素,还会返回被删除的元素 |
| 删除元素 | 列表.remove(元素) | remove()是删除某元素在列表的第一个匹配项 |
| 清空列表 | 列表.clear() | 清空列表内容 |
| 统计某元素数量 | 列表.count(元素) | |
| 统计列表元素 | len(列表) |
实例
1 | # 语法:列表[下标索引] |
特点
- 可以容纳多个元素
- 可以容纳不同类型的元素
- 数据是有序储存(有下标序号)
- 允许重复数据存在
- 可以修改(增加或删除元素等)
列表的遍历
- 遍历:将容器的内容依次取出,并处理,称之为遍历
- for和while对比
- for循环更简洁,while更灵活
- for用于从容器内依次取出元素并处理,while可以用以任何需要循环的场景
数据容器:tuple(元组)
元组的定义
1 | # 字面量 |
注意:
- 元组只有一个数据时,这个数后面要添加逗号
- 元组也支持嵌套
- 元组的下标索引与列表相同
- 元组的内容时不可修改的,否则会报错,但如果在元组中嵌套列表,嵌套的列表是可以修改的
- 多数特性和list一样,不同点在于不可修改
元组的相关操作
| 语法 | 作用 |
|---|---|
| index() | 查找某个数据,如果数据存在返回对于的下标,否则报错 |
| count() | 统计某个数据在当前元组出现的次数 |
| len(元组) | 统计元组内的元素个数 |
实例:
1 | # 定义元组 |
数据容器:str(字符串)
字符串介绍
- 字符串是字符的容器
- 一个字符串可以存放任意数量的字符
- 支持下标索引
- 允许重复字符串存在
- 不可以修改
- 字符串定义和格式化在Python基础(一)中有介绍
字符串的常用操作
| 语法 | 功能 |
|---|---|
| 字符串[下标] | 同列表、元组 |
| 字符串.index() | 同列表、元组 |
| 字符串.replace(字符串1,字符串2) | 将字符串1内容替换为字符串2的内容 |
| 字符串.split(分隔符字符串) | 按照指定的分隔符字符串,将字符串划分为多个字符串,并存入列表对象中 |
| 字符串.strip() | 去掉前后空格 |
| 字符串.strip(字符串) | 去掉前后指定的字符串 |
| 字符串.count(字符串) | 统计某个数据在当前元组出现的次数 |
| len(字符串) | 统计元组内的元素个数 |
数据容器(序列)的切片
序列:内容连续、有序,可使用下标索引的一类数据容器,列表、元组、字符串均可以视为序列
切片:从一个序列中,取出一个子序列
语法:序列[起始下标:结束下标:步长]
- 起始下标:从何处开始,可以留空,留空视作从头开始
- 结束下标:何处结束(不含),可以留空,留空视作截到结尾
- 步长:依次取元素的间隔
- 不写默认是1
- 步长1表示,一个个取元素,步长N表示每次跳过N-1个元素取
- 步长为负数表示反向取(起始下标和结束下标也要反向标记)
注意:切片操作不会影响序列本身,而是得到一个新的序列
数据容器:set(集合)
集合的定义
1 | # 定义集合字面量 |
集合的常用操作
| 方法 | 功能 |
|---|---|
| 集合.add(元素) | 集合内添加一个元素 |
| 集合.remove(元素) | 移除集合内指定的元素 |
| 集合.pop() | 从集合中随机取出一个元素 |
| 集合.clear() | 将集合清空 |
| 集合1.difference(集合2) | 得到一个新集合,内含2个集合的差集,原有的2个集合内容不变 |
| 集合1.difference_uodate(集合2) | 在集合1中,删除集合2中存在的元素集合1被修改,集合2不变 |
| 集合1.union(集合2) | 得到1个新集合,内含2个集合的全部元素,原有的2个集合内容不变 |
| len(集合) | 得到一个整数。记录了集合的元素个数 |
集合的特点
- 可以容纳多个元素
- 可以容纳不同类型的数据(混装)
- 数据时无序存储的(不支持下标索引)
- 不允许重复数据存在
- 可以修改
- 支持for循环遍历,不可以使用while循环遍历(无法下标索引)
数据容器:dict(字典)
字典的定义
1 | # 定义字典字面量 |
字典的常用操作
| 语法 | 功能 |
|---|---|
| 字典[Key] | 获取指定Key对应的Value值 |
| 字典[Key] = Value | 添加或更新键值对 |
| 字典.pop(Key) | 取出Key对应的Value并在字典内删除此Key的键值对 |
| 字典.clear() | 请空字典 |
| 字典.keys() | 获取字典的全部Key,可用for循环遍历字典 |
| len(字典) | 计算字典内的元素个数 |
字典的特点
- 字典可以提供基于Key检索Value的场景实现,Key不可以重复(重复会覆盖)
- 键值对的Key和Value可以是任意类型数据(Key不可以是字典)
- 字典不可以下标索引,而是通过Key检索Value
- 每一份数据都是KeyValue键值对
- 支持for循环,不支持while循环
- 可以修改
数据容器的总结对比
| 列表 | 元素 | 字符串 | 集合 | 字典 | |
|---|---|---|---|---|---|
| 元素数量 | 支持多个 | 支持多个 | 支持多个 | 支持多个 | 支持多个 |
| 元素类型 | 任意 | 任意 | 仅字符 | 任意 | Key:除字典外任意类型,Value:任意类型 |
| 下标索引 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
| 重复元素 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
| 可修改性 | 支持 | 不支持 | 不支持 | 支持 | 支持 |
| 数据有序 | 是 | 是 | 是 | 否 | 否 |
| 使用场景 | 可修改,可重复的一批数据记录场景 | 不可修改,可重复的一批数据记录场景 | 一串字符的记录场景 | 不可重复的数据记录场景 | 以Key检索Value的数据记录场景 |
数据容器的通用操作
| 功能 | 描述 |
|---|---|
| 通过for循环 | 遍历容器(字典是遍历Key) |
| max() | 容器内最大元素 |
| min() | 容器内最小元素 |
| len() | 容器元素个数 |
| list() | 转换为列表 |
| tuple() | 转换为元组 |
| str() | 转换为字符串 |
| set() | 转换为集合 |
| sorted(序列,[reverse=True]) | 排序,reverse=True表示降序得到一个排好序的列表 |
字符串大小比较方式
字符串比较:从头到尾,一位位比较,其中一位大,后面就无需比较了
单个字符比较:通过ASCII码表,确定字符对应的码值数字来确定大小