列表、元组、字典、集合
一、列表类型
列表在运维开发中,主要负责大批量数据的存储!!!
比如存储所有学生信息,存储所有的商品信息,存储所有的日志文件信息等等
1、为什么需要列表
思考:有一个人的姓名(TOM)怎么书写存储程序?
答:变量。
思考:如果一个班级100位学生,每个人的姓名都要存储,应该如何书写程序?声明100个变量吗?
答:No,我们使用列表就可以了, 列表一次可以存储多个数据。
在Python中,我们把这种数据类型称之为列表。但是在其他的编程语言中,如Java、Go、C++等语言中被称为数组。
2、列表的定义
1 | 列表序列名称 = [列表中的元素1, 列表中的元素2, 列表中的元素3, ...] |
案例演示:定义一个列表,用于保存苹果、香蕉以及菠萝
1 | list1 = ['apple', 'banana', 'pineapple'] |
注意:列表可以一次存储多个数据且可以为不同的数据类型
3、列表的相关操作
列表的作用是一次性存储多个数据,程序员可以对这些数据进行的操作有:
增、删、改、查。
☆ 查操作
列表在计算机中的底层存储形式,列表和字符串一样,在计算机内存中都占用一段连续的内存地址,我们向访问列表中的每个元素,都可以通过 “索引下标” 的方式进行获取。
如果我们想获取列表中的某个元素,非常简单,直接使用索引下标:
1 | list1 = ['apple', 'banana', 'pineapple'] |
查操作的相关方法:
| 编号 | 函数 | 作用 |
|---|---|---|
| 1 | len() | 返回列表中元素的个数 |
| 2 | in | 判断指定数据在某个列表序列,如果在返回True,否则返回False |
举个栗子:
1 | # 1、返回列表中元素的个数 |
☆ 增操作
| 编号 | 函数 | 作用 |
|---|---|---|
| 1 | append() | 增加指定数据到列表中 |
☆ append()
append() :在列表的尾部追加元素
1 | names = ['孙悟空', '唐僧', '猪八戒'] |
注意:列表追加数据的时候,直接在原列表里面追加了指定数据,即修改了原列表,故列表为可变类型数据。
☆ 删操作
| 编号 | 函数 | 作用 |
|---|---|---|
| 1 | del | 根据索引移除指定列表元素 |
| 2 | remove() | 移除列表中某个数据的第一个匹配项。 |
☆ remove()方法
作用:删除匹配的元素
1 | fruit = ['apple', 'banana', 'pineapple'] |
☆ 改操作
| 编号 | 函数 | 作用 |
|---|---|---|
| 1 | 列表[索引] = 修改后的值 | 修改列表中的某个元素 |
☆ 翻转与排序操作
| 编号 | 函数 | 作用 |
|---|---|---|
| 1 | reverse() | 将数据序列进行倒叙排列(翻转效果) |
| 2 | sort() | 对列表序列进行排序,也可以添加参数reverse=True实现从大到小 |
1 | list1 = ['貂蝉', '大乔', '小乔', '八戒'] |
小结:
列表.reverse() 作用?列表进行翻转,还可以使用切片实现!
列表.sort()作用?升序排列
4、列表的循环遍历
什么是循环遍历?答:循环遍历就是使用while或for循环对列表中的每个数据进行打印输出。
for循环(个人比较推荐):
1 | list1 = ['貂蝉', '大乔', '小乔'] |
容器的遍历都可以使用(for)循环结构。
5、随机点名程序开发
1 | ''' |
二、元组类型
作用:和列表类似,都可以实现大批量数据存储,唯一区分,元组一旦定义完成后,就不能修改与删除了,可以起到保护数据的目的。
1、为什么需要元组
思考:如果想要存储多个数据,但是这些数据是不能修改的数据,怎么做?
答:列表?列表可以一次性存储多个数据,但是列表中的数据允许更改。
1 | num_list = [10, 20, 30] |
那这种情况下,我们想要存储多个数据且数据不允许更改,应该怎么办呢?
答:使用元组,元组可以存储多个数据且元组内的数据是不能修改的。
2、元组的定义
元组特点:定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型。
基本语法:
1 | # 多个数据元组 |
注意:如果定义的元组只有一个数据,那么这个数据后面也要添加逗号,否则数据类型为唯一的这个数据的数据类型。
三、字典类型(重点)
列表类型比较适合大批量数据的存储。
作用?字典类型比较适合某一事物的存储,比如一个人、一本书、一个产品、一个主机信息等等。
我们说的这个事物往往是由多个属性组成,比如一个人(姓名、年龄、家庭住址),一个主机信息(IP、端口、账号、密码)
1、为什么需要字典(dict)
思考1:比如我们要存储一个人的信息,姓名:Tom,年龄:20周岁,性别:男,家庭住址:北京市昌平区,如何快速存储。
1 | person = ['Tom', 20, '男', '北京市昌平区'] |
思考2:在日常生活中,姓名、年龄以及性别同属于一个人的基本特征。但是如果使用列表对其进行存储,则分散为3个独立元素,这显然不合逻辑。我们有没有办法,将其保存在同一个元素中,姓名、年龄以及性别都作为这个元素的3个属性。
答:使用Python中的字典
2、Python中字典(dict)的概念
特点:
① 符号为 大括号(花括号) => {}
② 数据为 键值对 形式出现 => {key:value},key:键名,value:值,在同一个字典中,key必须是唯一(类似于索引下标)
③ 各个键值对之间用逗号隔开
在字典中,键名除了可以使用字符串的形式,还可以使用数值的形式来进行表示
定义:
1 | # 有数据字典 |
在Python代码中,字典中的key必须使用引号引起来
小结:
列表适合大批量数据存储、元组虽然类似列表,一旦定义完成后,就不能修改与删除(保护数据);
字典比较适合(某一事物)存储
3、字典的增操作(重点)
基本语法:
1 | 字典名称[key] = value |
案例:定义一个空字典,然后添加name、age以及address这样的3个key
1 | # 1、定义一个空字典 |
注意:列表、字典为可变类型
4、字典的删操作
del 字典名称[key]:删除指定元素
1 | # 1、定义一个有数据的字典 |
5、字典的改操作
基本语法:
1 | 字典名称[key] = value |
案例:定义一个字典,里面有name、age以及address,修改address这个key的value值
1 | # 1、定义字典 |
6、字典的查操作
① 查询方法:使用具体的某个key查询数据,如果未找到,则直接报错。
1 | 字典序列[key] |
② 字典的相关查询方法
| 编号 | 函数 | 作用 |
|---|---|---|
| 1 | keys() | 以类列表返回一个字典所有的键 |
| 2 | values() | 以类列表返回字典中的所有值 |
| 3 | items() | 以类列表返回可遍历的(键, 值) 元组数据 |
注:字典相关方法,如keys、values、items不能直接使用,必须结合for循环遍历输出!!!
案例1:提取person字典中的所有key
1 | # 1、定义一个字典 |
案例2:提取person字典中的所有value值
1 | # 1、定义一个字典 |
案例3:使用items()方法提取数据
1 | # 1、定义一个字典 |
四、集合类型
set集合,作用:无序且天生去重,特点:去重
1、什么是集合
集合(set)是一个无序、不重复的元素序列。
① 无序
② 天生去重
2、集合的定义
在Python中,我们可以使用一对花括号{}或者set()方法来定义集合,但是如果你定义的集合是一个空集合,则只能使用set()方法。
疑问:字典、集合都可以通过{}花括号,如何区分呢?答:如果{}是key:value键值对,就代表是字典;如果是具体的值,就是集合。
1 | # 定义一个集合 |
3、集合操作的相关方法(增删查)
疑问:集合操作只有增删查而没有修改方法?
答:集合没有索引下标,也没有key,而且结合本身就是无序的,所以无法精准对集合中的元素进行修改。所以只有增删查方法。
☆ 集合的增操作
add()方法:向集合中增加一个元素(单一)
1 | students = set() |
☆ 集合的删操作
remove()方法:删除集合中的指定数据,如果数据不存在则报错
1 | # 1、定义一个集合 |
☆ 集合中的查操作
in :判断某个元素是否在集合中,如果在,则返回True,否则返回False
1 | # 定义一个set集合 |
☆ 集合的遍历操作
1 | for i in 集合: |
4、集合的应用场景
作业检查
1 | # 1. 获取所有同学的信息集合 |
小结:
只要有去重需求,最简单的解决方法就是使用集合实现数据的存储!!
