数据容器
Python中的数据容器:
一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素。每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。
数据容器根据特点的不同,如:
- 是否支持重复元素
- 是否可以修改
- 是否有序,等
分为5类,分别是:
列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)
数据容器:list(列表)
基本语法:
列表内的每一个数据,称之为元素
- 以[]作为标识
- 列表内每一个元素之间用,逗号隔开
注意:列表可以一次存储多个数据,且可以为不同的数据类型,支持嵌套。
列表的下标索引
正向索引:
(从0开始,依次递增)
语法:列表[下标索引]
eg.name_list[0]
反向索引:
(从-1开始,依次递减)
eg.name_list[-1]
嵌套列表的下标(索引)
语法:列表[下标索引][下标索引]
注意:
要注意下标索引的取值范围,超过范围无法取出元素,并且会报错。
列表的常用操作
在Python中,如果将函数定义为class(类)的成员,那么函数会称之为:方法
方法和函数功能一样,有传入参数,有返回值,只是方法的使用格式不同
列表的查询功能(方法)
- 查找某元素的下标
功能:查找指定元素在列表的下标,如果找不到,报错ValueError
语法:列表.index(元素)
index就是列表对象(变量)内置的方法(函数)
列表的修改功能(方法)
- 修改特定位置(索引)的元素值:
语法:列表[下标]=值
可以使用如上语法,直接对指定下标(正向、反向下标均可)的值进行:重新赋值(修改)
- 插入元素:
语法:列表.insert(下标,元素),在指定的下标位置,插入指定的元素
- 追加元素方式1:
语法:列表.append(元素),将指定元素,追加到列表的尾部
- 追加元素方式2:
语法:列表.extend(其它数据容器),将其它数据容器的内容取出,依次追加到列表尾部
- 删除元素:
语法1:del 列表[下标]
语法2:列表.pop(下标) 该方法可以得到删除元素的返回值
- 删除某元素在列表中的第一个匹配项
语法:列表.remove(元素)
- 清空列表内容
语法:列表.clear()
- 统计某元素在列表内的数量
语法:列表.count(元素)
- 统计列表内,有多少元素
语法:len(列表)
总结:
list(列表)的遍历
列表的遍历-while循环
1.如何遍历列表的元素呢?
答:可以使用前面学过的while循环
2.如何在循环中取出列表的元素呢?
答:使用列表[下标]的方式取出
3.循环条件如何控制?
答:定义一个变量表示下标,从0开始,循环条件为 下标值<列表的元素数量
列表的遍历-for循环
while循环和for循环的对比
while循环和for循环,都是循环语句,但细节不同:
- 在循环控制上:
1.while循环可以自定循环条件,并自行控制
2.for循环不可以自定循环条件,只可以一个个从容器内取出数据
- 在无限循环上:
1.while循环可以通过条件控制做到无限循环
2.for循环理论上不可以,因为被遍历的容器容量不是无限的
- 在使用场景上:
1.while循环适用于任何想要循环的场景
2.for循环适用于,遍历数据容器的场景或简单的固定次数循环场景
数据容器:tuple(元组)
元组一旦定义完成,就不可以修改
元组定义:定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型。
注意:
1.元组只有一个数据,这个数据后面要添加逗号,如果不加逗号,则不是元组类型
eg.t2=('Hello',)
2.元组与列表一样支持下标索引,且用法一致
3.元组遍历与列表也一致
元组的相关操作
补充:
1.不可以修改元组的内容,否则会直接报错
2.可以修改元组内的list的内容(修改元素、增加、删除、反转等)
字符串
和其它容器如:列表、元组一样,字符串也可以通过下标进行访问
1. 从前向后,下标从0开始
2. 从后向前,下标从-1开始
注意:同元组一样,字符串是一个:无法修改的数据容器
字符串的常用操作
- 查找特定字符串的(起始)下标索引值
语法:字符串.index(字符串)
- 字符串的替换
语法:字符串.replace(字符串1,字符串2)
功能:将字符串内的全部:字符串1,替换为字符串2
注意:不是修改字符串本身,而是得到了一个新字符串,返回值是新的字符串哦
- 字符串的分割
语法:字符串.split(分隔符字符串)
功能:按照指定的分隔符字符串,将字符串划分为多个字符串,并存入列表对象中
注意:字符串本身不变,而是得到了一个列表对象
- 字符串的规整操作(去前后空格)
语法:字符串.strip()
- 字符串的规整操作(去前后指定字符串)
语法:字符串.strip(字符串)
注意,传入的是“12”其实就是:“1”和“2”都会移除,是按照单个字符。
- 统计字符串中某个字符串的出现次数
语法:字符串.count(字符串)
- 统计字符串的长度
语法:len(字符串)
字符串的遍历
同列表、元组一样,字符串也支持while循环和for循环进行遍历
字符串的特点
作为数据容器,字符串有如下特点:
1.只可以存储字符串
2.长度任意(取决于内存大小)
3.支持下标索引
4.允许重复字符串存在
5.不可以修改(增加或删除元素等)
6.支持while、for循环
序列
序列是指:内容连续、有序,可使用下标索引的一类数据容器
列表、元组、字符串,均可以视为序列。
序列的常用操作-切片
序列支持切片,即:列表、元组、字符串,均支持进行切片操作
切片:从一个序列中,取出一个子序列
语法:序列[起始下标:结束下标:步长]
表示从序列中,从指定位置开始,依次取出元素,到指定位置结束,得到一个新序列:
1.起始下标表示从何处开始,可以留空,留空视作从头开始
2.结束下标(不含)表示何处结束,可以留空,留空视作截取到结尾
3.步长表示,依次取元素的间隔
3.1 步长1表示,一个个取元素
3.2 步长2表示,每次跳过1个元素取
3.3 步长N表示,每次跳过N-1个元素取
3.4 步长为负数表示,反向取(注意,起始下标和结束下标也要反向标记)
集合
集合的定义
基本语法:
# 定义集合字面量
{元素,元素,......,元素}
# 定义集合变量
变量名称 ={元素,元素,......,元素}
# 定义空集合
变量名称=set()
注意:
空集合变量输出结果为set()
集合的常用操作-修改
首先,因为集合是无序的,所以集合不支持:下标索引访问
但是集合和列表一样,是允许修改的。
- 添加新元素
语法:集合.add(元素)。将指定元素,添加到集合内
结果:集合本身被修改,添加了新元素
- 移除元素
语法:集合.remove(元素),将指定元素,从集合内移除
结果:集合本身被修改,移除了元素
- 从集合中随机取出元素
语法:集合.pop(),功能,从集合中随机取出一个元素
结果:会得到一个元素的结果。同时集合本身被修改,元素被移除
- 清空集合
语法:集合.clear(),功能,清空集合
结果:集合本身被清空
- 取出2个集合的差集
语法:集合1.difference(集合2),功能:取出集合1和集合2的差集(集合1有而集合2没有的)
结果:得到一个新集合,集合1和集合2不变
- 消除2个集合的差集
语法:集合1.difference_update(集合2)
功能:对比集合1和集合2,在集合1内,删除和集合2相同的元素。
结果:集合1被修改,集合2不变
- 2个集合合并
语法:集合1.union(集合2)
功能:将集合1和集合2组合成新集合
结果:得到新集合,集合1和集合2不变
- 统计集合元素数量
语法:len(集合)
集合的遍历
集合不支持下标索引,不能用while循坏,可以用for循环
集合的特点
1.可以容纳多个数据
2.可以容纳不同类型的数据(混装)
3.数据是无序存储的(不支持下标索引)
4.不允许重复数据存在
5.可以修改(增加或删除元素等)
6.支持for循环
字典
字典的定义
字典的定义,同样使用{},不过存储的元素是一个个的:键值对,如下语法:
字典数据的获取
字典同集合一样,不可以使用下标索引,但是字典可以通过Key值来取得对应的Value
字典的嵌套
字典的Key和Value可以是任意数据类型(Key不可为字典)
注意:
字典内Key不允许重复,重复添加等同于覆盖原有数据
字典的常用操作
- 新增元素
语法:字典[Key]=Value,结果:字典被修改,新增了元素
- 更新元素
语法:字典[Key]=Value,结果:字典被修改,元素被更新
注意:字典Key不可以重复,所以对已存在的Key执行上述操作,就是更新Value值
- 删除元素
语法:字典.pop(Key),结果:获得指定Key的Value,同时字典被修改,指定Key的数据被删除,并且返回被删Value值
- 清空字典
语法:字典.clear(),结果:字典被修改,元素被清空
- 获取全部的key
语法:字典.keys(),结果:得到字典中所有Key
- 统计字典元素数量
语法:len(字典)
遍历字典
字典的特点
1.可以容纳多个数据
2.可以容纳不同类型的数据
3.每一份数据是KeyValue键值对
4.可以通过Key获取到Value,Key不可重复(重复会覆盖)
5.不支持下标索引
6.可以修改(增加或删除更新元素等)
7.支持for循环,不支持while循环
数据容器分类
数据容器特点对比
数据容器的通用统计功能
1.len(容器)统计容器的元素个数
2.max(容器)统计容器的最大元素
3.min(容器)统计容器的最小元素
通用类型转换
容器通用排序功能
通用排序功能
正向排序:
sorted(容器)
反向排序:
sorted(容器,[reverse=True])
将给定容器进行排序
ASCII码表
在程序中,字符串所用的所有字符如:
1.大小写英文单词
2.数字
3.特殊符号(!、\、|、@、#、空格等)
都有其对应的ASCII码表值
每一个字符都能对应上一个:数字的码值
字符串进行比较就是基于数字的码值大小进行比较的。
字符串比较
字符串是按位比较,也就是一位位进行对比,只要有一位大,那么整体就大。