今天要介绍的是Python的组合数据类型
整理不易,希望得到大家的支持,欢迎各位读者评论点赞收藏
感谢!
知识点
- 组合数据类型的基本概念
- 列表类型:定义、索引、切片
- 列表类型的操作:列表的操作函数、列表的操作方法
- 字典类型:定义、索引
- 字典类型的操作:字典的操作函数、字典的操作方法
知识导图
1、组合数据类型的基本概念
1.1 组合数据类型
- Python语言中最常用的组合数据类型有3大类,分别是集合类型、序列类型和映射类型。
- 集合类型是一个具体的数据类型名称,而序列类型和映射类型是一类数据类型的总称。
- 集合类型是一个元素集合,元素之间无序,相同元素在集合中唯一存在。
- 序列类型是一个元素向量,元素之间存在先后关系,通过序号访问,元素之间不排他。序列类型的典型代表是字符串类型和列表类型。
- 映射类型是“键-值”数据项的组合,每个元素是一个键值对,表示为(key, value)。映射类型的典型代表是字典类型。
1.2 集合类型概述
- Python语言中的集合类型与数学中的集合概念一致,即包含0个或多个数据项的无序组合。
- 集合是无序组合,用大括号({})表示,它没有索引和位置的概念,集合中元素可以动态增加或删除。
- 集合中元素不可重复,元素类型只能是固定数据类型,例如:整数、浮点数、字符串、元组等,列表、字典和集合类型本身都是可变数据类型,不能作为集合的元素出现。
S = {1010, "1010", 78.9} print(type(S)) # <class 'set'> print(len(S)) # 3 print(S) # {78.9, 1010, '1010'}
- 需要注意,由于集合元素是无序的,集合的打印效果与定义顺序可以不一致。由于集合元素独一无二,使用集合类型能够过滤掉重复元素。
T = {1010, "1010", 12.3, 1010, 1010} print(T) # {1010, '1010', 12.3}
- 集合类型有4个操作符,交集(&)、并集(|)、差集(-)、补集(^),操作逻辑与数学定义相同。
S = {1010, "1010", 78.9} T = {1010, "1010", 12.3, 1010, 1010} print(S - T) # {78.9} print(T – S) # {12.3} print(S & T) # {1010, '1010'} print(T & S) # {1010, '1010'} print(S ^ T) # {78.9, 12.3} print(T ^ S) # {78.9, 12.3} print(S | T) # {78.9, 1010, 12.3, '1010'} print(T | S) # {1010, 12.3, 78.9, '1010'}
- 集合类型有一些常用的操作函数或方法
- 集合类型主要用于元素去重,适合于任何组合数据类型。
S = set('知之为知之不知为不知') print(S) # {'不', '为', '之', '知'} for i in S: print(i, end="") # 不为之知
1.3 序列类型概述
- 序列类型是一维元素向量,元素之间存在先后关系,通过序号访问。
- 由于元素之间存在顺序关系,所以序列中可以存在相同数值但位置不同的元素。Python语言中有很多数据类型都是序列类型,其中比较重要的是:字符串类型和列表类型,此外还包括元组类型。
- 字符串类型可以看成是单一字符的有序组合,属于序列类型。列表则是一个可以使用多种类型元素的序列类型。序列类型使用相同的索引体系,即正向递增序号和反向递减序号。
- 序列类型有一些通用的操作符和函数
1.4 映射类型概述
- 映射类型是“键-值”数据项的组合,每个元素是一个键值对,即元素是(key, value),元素之间是无序的。键值对是一种二元关系,源于属性和值的映射关系
- 映射类型是序列类型的一种扩展。在序列类型中,采用从0开始的正向递增序号进行具体元素值的索引。而映射类型则由用户来定义序号,即键,用其去索引具体的值。
- 键(key)表示一个属性,也可以理解为一个类别或项目,值(value)是属性的内容,键值对刻画了一个属性和它的值。键值对将映射关系结构化,用于存储和表达。
2、列表类型
2.1 列表的定义
- 列表是包含0个或多个元组组成的有序序列,属于序列类型。列表可以元素进行增加、删除、替换、查找等操作。列表没有长度限制,元素类型可以不同,不需要预定义长度。
- 列表类型用中括号([])表示,也可以通过list(x)函数将集合或字符串类型转换成列表类型。
ls = [1010, "1010", [1010, "1010"], 1010] print(ls) # [1010, '1010', [1010, '1010'], 1010] print(list('列表可以由字符串生成')) # ['列', '表', '可', '以', '由', '字', '符', '串', '生', '成'] print(list()) # []
- 列表属于序列类型,所以列表类型支持序列类型对应的操作
2.2 列表的索引
- 索引是列表的基本操作,用于获得列表的一个元素。使用中括号作为索引操作符。
ls = [1010, "1010", [1010, "1010"], 1010] print(ls[3]) # 1010 print(ls[-2]) # [1010, '1010'] print(ls[5]) ''' Traceback (most recent call last): File "<pyshell#35>", line 1, in <module> ls[5] IndexError: list index out of range'''
- 可以使用遍历循环对列表类型的元素进行遍历操作,基本使用方式如下:
for <循环变量> in <列表变量>: <语句块>
ls = [1010, "1010", [1010, "1010"], 1010] for i in ls: print(i*2) ''' 2020 10101010 [1010, '1010', 1010, '1010'] 2020'''
2.3 列表的切片
- 切片是列表的基本操作,用于获得列表的一个片段,即获得一个或多个元素。切片后的结果也是列表类型。切片有两种使用方式:
<列表或列表变量>[N: M] 或 <列表或列表变量>[N: M: K]
- 切片获取列表类型从N到M(不包含M)的元素组成新的列表。当K存在时,切片获取列表类型从N到M(不包含M)以K为步长所对应元素组成的列表。
ls = [1010, "1010", [1010, "1010"], 1010] print(ls[1:4]) # ['1010', [1010, '1010'], 1010] print(ls[-1:-3]) # [] print(ls[-3:-1]) # ['1010', [1010, '1010']] print(ls[0:4:2]) # [1010, [1010, '1010']]