文章目录
- 定义
- 注意
- 列表
- 语法
- 案例
- 列表的下表索引
- 注意
- 案例
- 列表的方法
- 查询
- 修改
- 插入
- 追加一个元素
- 追加多个元素
- 删除
- 删除某元素在列表中的第一个匹配项
- 清空列表内容
- 统计某元素在列表内的数量
- 统计列表内,有多少元素
- 列表方法汇总
- 特点
- 双重遍历案例
- 元组
- 概要
- 语法
- 元组的方法
- 注意
- 元组特点
- 字符串
- 概要
- 字符串常用方法
- 替换
- 字符串的分割
- 字符串的规整操作(去前后空格)
- 字符串的规整操作(去前后指定字符串)
- 统计字符串中某字符串的出现次数
- 统计字符串的长度
- 方法汇总
- 特点
- 容器序列切片
- 概要
- 语法
- 案例
- 集合
- 概要
- 语法
- 常见方法
- 添加新元素
- 移除元素
- 从集合中随机取出元素
- 清空集合
- 取出2个集合的差集
- 消除2个集合的差集
- 2个集合合并
- 查看集合的元素数量
- 方法汇总
- 特点
- 字典
- 定义
- 语法
- 字典的嵌套
- 常用方法
- 获取
- 新增元素
- 更新元素
- 删除元素
- 清空字典
- 获取全部的key
- 遍历字典
- 计算字典内的全部元素(键值对)数量
- 方法汇总
- 特点
- 容器对比
- 分类
- 对比
- 应用场景
- 容器通用功能
定义
一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素,每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。
注意
数据容器内可以存放不同的数据类型。这点和java是有差别的
容器内可以嵌套容器
数据容器根据特点的不同,如:
- 是否支持重复元素
- 是否可以修改
- 是否有序,等
分为5类,分别是:列表(1ist)、元组(tuple)、字符串(str)、集合(set)、字典(dict)
列表
语法
案例
列表的下表索引
列表中的每一个元素,都有其位置下标索引,从前向后的方向,从0开始,依次递增。或者,可以反向索引,也就是从后向前:从-1开始,依次递减。如果列表是嵌套的列表,同样支持下标索引。
注意
这里倒序的时候与java的不同,java中下标是固定的,倒序遍历时还是以原来的下标获取。
案例
列表的方法
函数是一个封装的代码单元,可以提供特定功能。
在Python中,如果将函数定义为class(类)的成员,那么函数会称之为:方法
查询
查找某元素的下标
功能:查找指定元素在列表的下标,如果找不到,报错ValueError
语法:列表.index(元素)
index就是列表对象(变量)内置的方法(函数)
案例:
修改
修改特定位置(索引)的元素值
语法:列表[下标]=值
可以使用如上语法,直接对指定下标(正向、反向下标均可)的值进行:重新赋值(修改)
案例:
插入
语法:列表.insert(下标,元素),在指定的下标位置,插入指定的元素
案例:
追加一个元素
语法:列表.append(元素),将指定元素,追加到列表的尾部
案例:
追加多个元素
语法:列表.extend(其它数据容器),将其它数据容器的内容取出,依次追加到列表尾部
案例:
删除
语法1:del 列表[下标]
语法2:列表.pop(下标)
案例:
删除某元素在列表中的第一个匹配项
语法:列表.remove(元素)
清空列表内容
语法:列表.clear()
统计某元素在列表内的数量
语法:列表.count(元素)
统计列表内,有多少元素
语法:len(列表)
可以得到一个int数字,表示列表内的元素数量
列表方法汇总
特点
- 可以容纳多个元素(上限为2**63-1、9223372036854775807个)
- 可以容纳不同类型的元素(混装)
- 数据是有序存储的(有下标序号)
- 允许重复数据存在
- 可以修改(增加或删除元素等)
除了点2点其他的和java中数组列表一样
双重遍历案例
元组
概要
元组同列表一样,都是可以封装多个、不同类型的元素在内,但最大的不同点在于:元组一旦定义完成,就不可修改。所以,当我们需要在程序内封装数据,又不希望封装的数据被复改,那么元组就非常合适了。
语法
元组定义:定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型
注意:元组只有一个数据,这个数据后面要添加逗号
元组的方法
元组由于不可修改的原因,所以方法很少。
案例:
注意
- 不可以修改元组的内容,否则会直接报错
- 可以修改元组内的ist的内容(修改元素、增加、删除、反转等)
- 不可以替换list为其它list或其它类型
元组特点
- 可以容纳多个数据
- 可以容纳不同类型的数据(混装)
- 数据是有序存储的(下标索引)
- 允许重复数据存在
- 不可以修改(增加或删除元素等)
- 支持for循环
字符串
概要
字符串是字符的容器,一个字符串可以存放任意数量的字符。
和其它容器如:列表、元组一样,字符串也可以通过下标进行访问:
- 从前向后,下标从0开始
- 从后向前,下标从-1开始
同元组一样,字符串是一个:无法修改的数据容器。所以对字符串进行修改、移除、追加均无法完成。如果必须要做,只能得到一个新的字符串,旧的字符串是无法修改。这点和java字符串是一样的,都不能修改。
字符串常用方法
替换
语法:字符串.replace(字符串1,字符串2)
功能:将字符串内的全部:字符串1,替换为字符串2
注意:不是修改字符串本身,而是得到了一个新字符串
字符串的分割
语法:字符串.split(分隔符字符串)
功能:按照指定的分隔符字符串,将字符串划分为多个字符串,并存入列表对象中
注意:字符串本身不变,而是得到了一个列表对象
字符串的规整操作(去前后空格)
语法:字符串.strip()
字符串的规整操作(去前后指定字符串)
语法:字符串.strip(字符串)
统计字符串中某字符串的出现次数
语法:字符串.count(字符串)
统计字符串的长度
语法:len(字符串)
方法汇总
特点
- 只可以存储字符串
- 长度任意(取决于内存大小)
- 支持下标索引
- 允许重复字符串存在
- 不可以修改(增加或删除元素等)
- 支持for循环
基本和列表、元组相同;
不同与列表和元组的在于:字符串容器可以容纳的类型是单一的,只能是字符串类型;
不同于列表,相同于元组的在于:字符串不可修改。
容器序列切片
概要
序列是指:内容连续、有序,可使用下标索引的一类数据容器。列表、元组、字符串,均可以可以视为序列
序列支持切片,即:列表、元组、字符串,均支持进行切片操作
切片:从一个序列中,取出一个子序列
语法
语法:序列[起始下标:结束下标:步长]
表示从序列中,从指定位置开始,依次取出元素,到指定位置结束,得到一个新序列:
- 起始下标表示从何处开始,可以留空,留空视作从头开始
- 结束下标(不含)表示何处结束,可以留空,留空视作截取到结尾
- 步长表示,依次取元素的间隔
步长1表示,一个个取元素
步长2表示,每次跳过1个元素取
步长N表示,每次跳过N-1个元素取
步长为负数表示,反向取(注意,起始下标和结束下标也要反向标记)
注意:
此操作不会影响序列本身,而是会得到一个新的序列(列表、元组、字符串)
案例
集合
概要
集合,最主要的特点就是:不支持元素的重复(自带去重功能)、并且内容无序
语法
1、定义集合字面量
{元素,元素,元素}
2、定义集合变量
变量名称={元素,元素,元素}
3、定义空集合
变量名称=set()
常见方法
添加新元素
语法:集合.add(元素)。将指定元素,添加到集合内
结果:集合本身被修改,添加了新元素
移除元素
语法:集合.remove(元素),将指定元素,从集合内移除
结果:集合本身被修改,移除了元素
从集合中随机取出元素
语法:集合.popO,功能,从集合中随机取出一个元素
结果:会得到一个元素的结果。同时集合本身被修改,元素被移除
清空集合
语法:集合.clear0,功能,清空集合
结果:集合本身被清空
取出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(集合)
功能:统计集合内有多少元素
结果:得到一个整数结果
方法汇总
特点
- 可以容纳多个数据
- 可以容纳不同类型的数据(混装)
- 数据是无序存储的(不支持下标素引)
- 不允许重复数据存在
- 可以修改(增加或删除元素等)
- 支持for循环
字典
定义
字典的定义,同样使用{},不过存储的元素是一个个的:键值对。
语法
1、定义字典字面量
{key:value , key:value , … ,key:value}
2、定义字典变量
my_dict = {key: value , key: value , … , key:value}
3、定义空字典
my_dict={} #空字典定义方式1
my_dict= dict() #空字典定义方式2
- 使用{}存储元素,每一个元素是一个键值对
- 每一个键值对包含Key和Value(用冒号分隔)
- 键值对之间使用逗号分隔
- Key和value可以是任意类型的数据(key不可为字典)
- Key不可重复,重复会对原有数据覆盖
字典的嵌套
字典的Key和Value可以是任意数据类型(Key不可为字典)。那么,就表明,字典是可以嵌套的
常用方法
获取
字典同集合一样,不可以使用下标索引。但是字典可以通过Key值来取得对应的Value
新增元素
语法:字典[Key]=Value,结果:字典被修改,新增了元素
更新元素
语法:字典[Key]=Value,结果:字典被修改,元素被更新
注意:字典Key不可以重复,所以对已存在的Key执行上述操作,就是更新Value值
删除元素
语法:字典.pop(Key),
结果:获得指定Key的Value,同时字典被修改,指定Key的数据被删除
清空字典
语法:字典.clear(),结果:字典被修改,元素被清空
获取全部的key
语法:字典.keys(),结果:得到字典中的全部Key
遍历字典
语法:for key in字典.keys()
计算字典内的全部元素(键值对)数量
语法:len(字典)
结果:得到一个整数,表示字典内元素(键值对)的数量
方法汇总
特点
- 可以容纳多个数据
- 可以容纳不同类型的数据
- 每一份数据是Key-Value键值对
- 可以通过Key获取到Value,Key不可重复(重复会覆盖)
- 不支持下标索引
- 可以修改(增加或删除更新元素等)
- 支持for循环,不支持while循环
容器对比
分类
- 是否支持下标索引
支持:列表、元组、字符串-序列类型
不支持:集合、字典-非序列类型
- 是否支持重复元素:
支持:列表、元组、字符串-序列类型
不支持:集合、字典-非序列类型
- 是否可以修改
支持:列表、集合、字典
不支持:元组、字符串
对比
应用场景
- 列表:一批数据,可修改、可重复的存储场景
- 元组:一批数据,不可修改、可重复的存储场景
- 字符串:一串字符串的存储场景
- 集合:一批数据,去重存储场景
- 字典:一批数据,可用Key检索Value的存储场景