py的数据容器
1. 概述
数据容器的目的是运用少量的彬良存储大量数据,如一个name变量存储多个名字。使变量的运用更加高效。
数据容器的的概念是:一种额可以容纳多份数据的数据的数据类型,容纳的每份数据称之为一个元素,每一个元素可以说任意 类型的数据类型,如字符串,数字,布尔等。
容器有五类:
- 列表(list)
- 元组(tuple)
- 字符串(str)
- 集合(set)
- 字典(dirt)
根据如下特点划分:
- 是否支持相同元素
- 是否可以修改
- 是否有序
2. 列表(list)
2.1 列表基本定义
基本语法如下
1 | #定义变量 |
- 列表的标志为[]
- 列表的每一个元素用逗号隔开
- 空列表的定义中list定义时用小括号而非中括号
示例
1 | my_list=["吃喝不愁",987,False] |
运行结果如下:
类型为list(列表)类型
列表的元素不仅可以用来存储常规数据,也可以存储另一个列表,即列表的嵌套。
格式如下:
1 | 列表名称=[列表1,列表2,列表3] |
示例:
1 | #1 |
输出结果为
2.2 常用操作
列表的取出可以使用下标索引
基本语法为:
1 | 列表名称[元素下标] |
- 在这里元素下标第一个从0开始,依次往后推,如果从后往前从-1开始
- 如果是嵌套列表则用两个[]
示例
1 | #1 |
基本操作如下表
| 使用方式 | 作用 |
|---|---|
| 名称.append(元素) | 向列表中添加一个元素 |
| 名称.extend(容器) | 将目标容器的元素取出追加到列表的末尾 |
| 名称.insert(下标,元素) | 在指定下标处插入指定元素,原指定下标元素及其以后的元素编号+1 |
| del 名称[下标] | 删除列表指定下标元素 |
| 名称.pop(下标) | 删除下标指定元素并且返回 |
| 名称.remove(元素) | 从前向后删除第一个与之匹配的元素 |
| 名称.clear() | 清空此列表 |
| 名称.count(元素) | 统计这个元素在列表中出现次数 |
| 名称.index() | 查找指定元素下标位置,如果没有就报错ValueError |
| len(名称) | 统计列表内有多少元素 |
3. 元组(tuple)
3.1 元组基本定义
元组与列表区别在于不可修改。定义后只读。
当我们封装的数据不想让其被修改则用元组
基本语法如下:
1 | #1 |
-
元组在定义上与列表是括号的不同,元组也支持不同数据类型混搭
-
空元组两种方式均用小括号
元组不可以修改,但是如果元组中包含列表,则列表对应内容可以修改
示例:
1 | #1 |
运行结果如下:
3.2 元组常规操作
元组由于其不可修改特性,所以具有操作的方式如下
| 使用方式 | 作用 |
|---|---|
| 名称.index(元素) | 查找某个元素下标 |
| 名称.count(元素) | 统计某个元素出现次数 |
| len(元组) | 统计元组有多少元素 |
4. 字符串及其操作(str)
字符串的本质为一个容器,并且不可修改。
但是字符串拥有替换功能(replace)
基本语法如下:
1 | 字符串.replace(字符串1,字符串2) |
其功能为将字符串1内容换为字符串2内容。从而==得到一个新的字符串==
示例
1 | my_st="you and me" |
结果如下:
原字符串并未改变
字符串还可以进行分割(split)
基本语法如下:
1 | 字符串.split(分割字符串) |
功能:将字符串分割成多个字符串
==将会得到一个列表,而字符串本体不变==
示例:
1 | str="hello you and me" |
结果如下
字符串的整规功能(strip)
基本语法如下:
1 | 字符串.strip(字符串)#若不填则默认为空格 |
示例:
1 | my_str1=" hello " |
输出结果如下:
字符串也可以进行count和len的功能
字符串的另一个特性:切片(列表和元组均支持):
基本语法:
1 | 序列[开始元素下标:结束元素下标:步长] |
在这个语法中需要注意的是:
- 起始和结束都可以省略,表示从头开始直到结尾,步长空着默认为1
- 步长为1为一个一个取,为2则取一个跳过一个,如果为负数则倒着取
- 结束时不包含结束元素下标
- 开始元素和结束元素可以取负
示例:
1 | str="爱党爱国爱人民" |
结果如下
5. 集合(set)
集合特点:
- 没有重复元素(即使录入了输出时也只会留下一个)
- 无序(不支持下标索引)
基本语法:
1 | #1 |
示例集合的基础使用:
1 | my_set1={12,345,4532,123} |
集合的差集:重新得到一个集合,集合1有而集合2没有的元素组成的集合
基本语法如下
1 | 集合1.difference(集合2) |
示例:
1 | my_set1={12,345,4532,123} |
消除差集:在集合1内删除集合2的内容
基本语句如下:
1 | 集合1.difference_update(集合2) |
示例:
1 | my_set1={12,345,4532,123} |
集合合并:将两个集合合并为一个
基本语法:
1 | 集合1.union(集合2) |
示例:
1 | my_set1={12,345,4532,123} |
注意:
- 集合的添加元素使用add
- 集合的差集时得到一个新集合并非改变原集合
- 消除差集则是修改了集合1内容,没有改变集合2内容
- 集合合并后相同元素会只存在一个被保留
6. 字典(dirt)
字典的功能是存储键值对,通过key找值
1 | #1 |
==注意:字典的key值不能重复,value可以重复==
示例:
1 | my_dirt={"张三":13,"李四":14,"王五":15} |
字点新增元素和改变value
基本语法:
1 | my_dirt={key1:value1,key2:value,key3:value} |
==当key已经存在于字典时则是修改value==
==如果 不存在key则相当于添加键值对==
字典删除和清空:
删除基本语法:
1 | 字典.pop(key) |
==将key对应的value取出,同时字典被修改,对应键值对被删除==
清空基本语法:
1 | 字典.clear() |
字典获取全部key
基本语法:
1 | 字典.keys() |
示例:
1 | my_dirt={"张三":13,"李四":14,"王五":15} |
输出结果为:
字典的遍历
字典低遍历结果是显示key值,如果需要显示value值需要使用dirt[key]
示例:
1 | my_dirt={"张三":13,"李四":14,"王五":15} |
结果为:
字典也支持使用len函数统计数量
7. 容器通用操作
max(容器):找到容器中最大的值
min(容器):找到到容器中最小值
list(容器):将容器转化为列表
tuple(容器):将容器转化为元组
str(容器):将容器转化为字符串
sorted(容器,[reverse=Ture])(中括号为是否开起倒序排序,中括号使用时去掉):排序
示例:
1 | example="123 aksdfkdj 12987" |
结果如下:
==注意:字典转化后只剩key,字符串转化后每个字符都被单独分出来了,在排序中字典也会丢失value==
资料参考
b站的黑马程序员












