导图社区 第六章Python组合数据类型
“在Python 中,除字符串外,组合数据类型主要包括列表、元组、集合和字典等。 组合数据类型还可以按照下面的方式区分: 概念:列表是写在[ ]之间、用逗号隔开的元素集合。 应用:是Python 中使用最频繁、灵活性最好的数据类型,可以完成大多数集合类的数据结构实现。
编辑于2023-03-07 16:46:25 云南Python 组合数据类型
1.基本概念:能够表示多个数据的类型称为组合数据类型,组合数据可以将多个相同类型或不同类型的数据组织为一个整体
2.集合类型 (set)
概述
定义:具有某种特定性质的对象汇总而成的集体,其中组成集合的对象称为该集合的元素;集合用一对大括号“{ }”表示,可以有0个或多个元素,元素之间没有位置和索引的概念,可以动态增加或删除元素。
特征
确定性:集合中每个元素都确定的
互异性:集合中每个元素互不相同,不可重复
无序性:集合中的元素是无序的,不能进行排序。
元素的数据类型:只能是不可变数据类型,如:整数、浮点数、字符串、元组
提示:由于集合元素无序性,集合定义时元素顺序可以与输出不一致,且不能进行比较和排序;由于元素不可重复的唯一性,可用于过虑重复元素。
集合类型的创建
1.使用大括号“{ }”直接创建,中间元素用逗号“,”分隔,必须有元素,不能用大括号“{ }”创建空集合。
2.使用内置函数set(),将其它数据类型转换为集合,可以是空集合
集合数据类型的常用操作
操作符
S-T:差集,去除S和T中共同元素,返回S中剩余元素。
S&T:交集,返回S和T中共同元素
S^T:补集,返回S和T中非共同元素
S|T::并集,返回S和T中所有元素
操作函数
len():返回元素个数
操作方法
S.add(x):向集合中添加元素,如果元素已在集合中,便不作任何处理
S.remove(x):如果元素存在则移除该元素,不在则抛出KeyError异常
S.clear():清空集合
S.discard(x):如果元素存在则移除该元素,不在做处理
S.pop(x):随机返回集合中的一个元素,同时删除该元素,若集合为空则抛出KeyError异常
S.copy():复制集合
S.isdisjoint(T):判断同个集合是否有相同元素,没有返回True,有返回False.
in/not in
x in S:判断x是否是S集合的元素,是返回True,否则Flase
not in:不是返回True,是返回False
集合推导式:{exp for i in set if cond}
3.序列数据类型
概述:一维元素向量,元素之间存在先后顺序,通过序号访问的一组数据,元素之间可以出现数值相同但位置不一样的元素
类型
列表类型 (list)
创建列表
1.使用方括号“[]”直接创建,列表中元素类型可以是任意类型,元素之间用逗号“,”分隔。可以创建空列表,没有长度限制。
2.使用函数list()将其它数据类型转换为列表类型
列表基本操作
一、访问列表
1.以索引方式访问列表元素:list[n]
2.以切片方式访问列表元素,获取子列表:list[n:m:k]
3.用for......in遍历依次访问列表列表元素
4.用in 或not ......in查询列表元素
二、添加列表元素
(1)ls.append(x)方法:在列表最后添加一个元素x
(2) ls.insert(i,x):在指定位置为 i 索引处添加元素
(3)ls.extend(list[ ]):一次性在末尾添加一个列表的所有元素
三、删除列表元素
(1)del语句:用于删除单个元素或整个列表 del<列表变量>[<索引序号>] del<列表变量>[<n:m>] del<列表变量>[<n:m:k>] del<列表变量>
(2)ls.remove(x):用于删除列表中匹配到的第一个元素(列表可能有多个数值为x的元素)x,后面的不管。
(3)ls.pop(i):用于获取第i个元素(相当于取出这个元素),并将元素从列表中删除,若省略i,则操作最后一个元素
(4)ls.clear():清空列表
四、列表元素排序
(1)sort(key=None,reverse=Flase) key:排序规则; reverse:控制元素排序方式 Ture:表示降序排列 Flase:表示升序排列 说明:此方法不产生新列表,而是用排序后的有序列表覆盖原来列表
(2)sorted:用于产生一个按升序排序的新列表,不影响原来列表
(3)reverse():用于逆置列表
五、列表复制
(1)ls.copy():生成一个新列表,复制列表中所有元素
六、其他操作:
(1)赋值符“=”不能用于对列表进行赋值,只能进行关联和指向。
(2)赋值符可以用于对列表的元素或片段进行赋值和修改。
七、列表推导式:(1)[exp for x in list] exp:用于在每层循环中对列表中的元素进行运算 for...in...:用于遍历列表或可迭代对象 (2)带有if语句的列表推导式:[exp for x in list if cond]:遍历列表,若列表中的元素x符合条件cond, 按表达式exp对其进行运算后将其添加到新列表中。 (3)嵌套for循环语句的列表推导式:[exp for x in list_1 for y in list_2]:从左至右分别是外循环和内循环,可以实现利用两个列表生成新的列表。 (4)带有if语句和嵌套for循环语句的列表推导式: [exp for x in list_1[if cond] for y in list_2 [if cond] ...... for y in list_2 [if cond]
元组类型 (tuple)
定义:由一对圆括号表示,元素之间用逗号分隔,只有一个元素时,也要有逗号。
创建
1.用表示符圆括号“()”直接定义
2.用函数tuple()转换
特点:
1.元组是不可变数据类型,定义好后便不可修改 2.元素类型和个数不受限 3.组合数据类型中的操作适用于元组
映射类型
一.映射概述:键——值数据项的组合,每个元素是一个键值对,即元素是(key,value),元素之间是无序的,键—值对是一种二元关系,源于属性和值的映射关系。映射相当于由用户定义键(key)作为索引去对应具体的值(value) 键(key):表示一个属性,也可理解为一个项目或类别 值(value):是属性内容。
二.映射定义:键——值对的基本思想是将值(value)信息关联一个键(key),进而通过键的信息查找对应的值的信息。字典是典型的映射类型
三.字典 (dict)
(一).创建字典
(1)通过大括号{}创建:{<键1>:<值1>,<键2>:<值2>......<键n>:<值n>} 键和值之间用冒号“:”连接,不同键—值对间(元素)用逗号分隔;元素之间无序,键只能是不可变数据类型,且是唯一的。
(2)用内置函数dict()创建字典
(二).字典的操作
1.字典访问
(1)通过索引(键,key)的访问:<值>=<字典变量>[键]
(2)get()方法:<字典变量>.get(key,default]):键存在返回相应的值,不存在则返回默认值default.
(3)keys()方法:<字典变量>.keys():返回所有键的信息
(4)values()方法:<字典变量>.values():返回所有值的信息
(5)items()方法:<字典变量>.items():返回所有键值对
2.字典元素添加
1.字典元素添加:<字典变量>[键]=值
2.字典元素修改:和添加元素类似
3.字典元素的删除
(1)pop()方法:<字典变量>.pop(key,defalut):键存在则返回相应的值,同时删除键值对,否则返回默认值default
(2)popitem()方法:<字典变量>.popitem():随机从字典中取出一个键值对,以元组(key,value)形式返回,同时从字典中删除该键值对。
(3)clear():<字典变量>.clear()
说明
1.键——值对只能通过键索引值;2.字典可用于遍历循环,返回值为键值
字典推导式:{new_key:new_value for key,value in dict.items()}
扩展:d.sort(key=lambda x:x[1],reverse=True) 说明:表示在字典d中以元素的第二值(进行排序
索引体系
正向递增索引
反向递减索引
操作符
in /not in
"+":连接符
“*”:复制
s[i]:索引,返回第举止字符
s[i:j]:切片
s[i:j:k]:步骤切片
函数和方法
len():返回元素个数
min(x) /max(x):最小元素/最大元素
s.index(x):第一次出现的位置
s.count(x):出现的总次数