计算机二级python-第六章-组合数据类型

本文详细介绍了Python中的三种组合数据类型:集合、序列和映射。集合是无序且不重复的元素集合,常用操作包括添加、删除和集合运算。序列类型包括字符串、列表和元组,支持索引、切片和各种操作。列表是最常见的序列类型,允许动态增删元素。映射类型以字典为代表,由键值对构成,提供了丰富的操作函数和方法。文章通过实例展示了这些数据类型的使用方法。
摘要由CSDN通过智能技术生成

时间:2021/09/04


1.组合数据类型的基本概念

计算机不仅能对单个变量表示的数据进行处理,通常情况,计算机更需要对一组数据进行批量处理。这种能够表示多个数据的类型称为组合数据类型。

  • python中最常用的组合数据类型有3大类
    • 集合类型
      • 是一个元素集合,元素之间无序,相同元素在集合中唯一存在
    • 序列类型
      • 是一个元素向量,元素之间存在先后关系,通过序号访问,元素之间不排他。
      • 序列类型的典型代表是字符串类型和列表类型
    • 映射类型
      • 是“键-值”数据项的组合,每个元素是一个键值对,表示为(key,value)
      • 映射类型的典型代表是字典类型
  • 集合类型是一个具体的数据类型名称,而序列类型和映射类型是一类数据类型的总称。

1.1 集合类型概述

  • 集合类型与数学中的集合概念一致,即包含0个或多个数据项的无序组合。
  • 集合是无序组合,用大括号{}表示,没有索引和位置的概念,集合中的元素可以动态增加或删除。
  • 集合中的元素不可重复,元素类型只能是不可变数据类型,如整数,浮点数,字符串,元组等,
  • 列表,字典和集合类型本身都是可变数据类型,不能作为集合中的元素出现

在这里插入图片描述

注:

  • 由于集合元素是无序的,集合的输出顺序与定义顺序可以不一致
  • 由于集合元素独一无二,使用集合类型能够过滤掉重复元素
  • 集合元素间没有顺序,不能比较,不能排序。

创建集合直接使用“{}”


尽管集合中的元素是不可重复的,但集合元素在输入时是不受限制的。元素在输入集合后会自动去重。

操作符及运算效果
S - T返回一个新集合,包括在集合S中但不再集合T中的元素
S & T返回一个新集合,包括同时在集合S和T中的元素
S ^ T返回一个新集合,包括集合S和T中非共同元素
在这里插入图片描述返回一个新集合,包括集合S和T中所有元素

在这里插入图片描述

s={1,2,3}
t={3,4,5}
# 输出交集
print('交集',s&t)
# 输出补集
print('补集',s^t)
# 输出并集
print('并集',s|t)
# 输出差集
print('差集',s-t)

在这里插入图片描述


集合类型常用的操作函数或方法

函数或方法效果
s.add(x)如果数据项x不在集合s中,将x增加到s
s.remove(x)如果数据项x在集合s中,移除该元素,不在则产生KeyError的异常
s.clear()移除s中所有数据项
len(s)返回集合s的元素个数
x in s如果x是s的元素,返回True,否则返回False
x not in s如果x不是s的元素,返回True,否则返回False
  • set(x)函数将其他的组合数据类型变成集合类型,返回结果是一个无重复且排序任意的集合。
  • set()函数也可以生成空集合变量
# 定义一个空集合
# 区别定义一个空字典 s={}
s=set({})
# 添加一个元素
s.add(16)
print(s)
# 移除一个元素
s.remove(16)
print(s)
# 添加两个元素
s={6,8,16}
print(s)
# 集合的长度
print(len(s))
# 清楚所有元素
s.clear()
print(s)

在这里插入图片描述

集合类型主要用于元素去重,适合于任何组合数据类型

s=set('上海自来水来自上海')
print(s)
for i in s:
    print(i,end='')

在这里插入图片描述

1.2 序列类型概述

  • 序列类型是一维元素向量,元素之间存在先后关系,通过序号访问。
  • 在数学中,经常给每个序列起一个名字,如n个数的序列s,可以表示为:s=s0,s1,s3=2,…,sn-1
  • 当需要访问序列中某个特定值,只需通过下标标出即可。如查找序号为2的元素,可通过s[2]获得。序列的下标从0开始编号

  • 由于元素之间存在顺序关系,所以序列中可以存在数值相同但位置不同的元素。典型的是字符串类型、列表类型和元组类型。
  • 字符串类型可以看成是单一字符串的有序集合,属于序列类型。列表则是一个可以使用多种类型元素的序列类型。
  • 序列类型各个具体类型使用相同的索引体系,与字符串类型一样,即正向递增序号和反向递减序号。

在这里插入图片描述

序列类型的操作符和函数

操作符作用
x in s如果x是s的元素,返回True,否则返回False
x not in s如果x不是s的元素,返回True,否则返回False
s + t连接s和t
s * n或n * s将序列s复制n次
s[i]索引,返回序列的第i个元素
s[i:j]切片,返回包含序列s的第i到j个元素的子序列(不包含第j个元素)
s[i:j:k]步骤切片,返回包含序列s的第i到j个元素,以k为步长的子序列
len(s)序列s的元素个数(长度)
min(s)序列s中的最小元素
max(s)序列s中的最大元素
s.index(x)序列s中第一次出现元素x的位置
s.count(x)序列s中出现x的总次数

1.2.1元素类型

元组类型是序列类型的重要组成之一。元组类型在python中表示为tuple,一般以小括号和逗号进行组织。

在这里插入图片描述

元组类型严格遵循序列类型的操作定义,可以使用序列类型的操作符和函数

在这里插入图片描述

在这里插入图片描述

注:

  • 元组类型一旦定义就不能修改,不够灵活
  • 元素类型的所有操作都可以由列表类型实现。

在这里插入图片描述

元组类型主要在python语法相关的场景使用,如当函数返回多个值时,多个返回值以元素类型返回,实际返回一个数据类型

在这里插入图片描述


1.3 映射类型概述

  • 映射类型是“键-值”数据项组合,每个元素是一个键值对,即元素是(key,value),元素之间是无序的。
  • 键值对(key,value)是一种二元关系,源于属性和值的映射关系
  • 映射类型是序列类型的一种扩展。在序列类型中,采用从0开始的正向递增序号进行具体元素值的索引。而映射类型则由用户定义序号,即键,用键去索引具体的值
  • 键(key)表示一个属性,也可以理解为一个类别或项目,值(value)是属性的内容,键值对刻画了一个属性和它的值。键值对将映射关系结构化,用于存储和表达。

2.列表类型

2.1 列表的定义

  • 列表类型是包含0个或多个元素的有序序列,属于序列类型。
  • 列表可以进行元素的增加,删除,替换,查找等操作。列表没有长度限制,元素类型可以不同。
  • 列表类型用中括号[]表示,也可以通过list(x)函数将集合或字符串类型转换成列表类型。list()函数可生成空列表

在这里插入图片描述

  • 由于列表属于序列类型,所以列表类型支持序列类型对应的操作

在这里插入图片描述


2.2 列表的索引

  • 索引是列表的基本操作,用于获取列表中一个元素。该操作沿用序列类型的索引方式,即正向递增序号和逆向递减序号
  • 使用中括号作为索引操作符,索引序号不能超过列表的元素范围,否则会产生IndexError的错误。

在这里插入图片描述

  • 可以使用遍历循环对列表类型的元素进行遍历操作。
  • 语法格式:
for 循环变量 in 列表变量:
    语句块
# 遍历操作列表内容
lst=[100,'131',[101,'624'],100]
for i in lst:
    print(i*2)

在这里插入图片描述

# 遍历输出列表内容
lst=[100,'131',[101,'624'],100]
for i in range(len(lst)):
    print(lst[i])

在这里插入图片描述

2.3 列表的切片

  • 切片是列表的基本操作,用于获取列表的一个片段,即获得0个或多个元素。切片后的结果也是列表类型。
  • 切片的两种使用方式:
    • 列表或列表变量[N:M]
    • 列表或列表变量[N: M :K]

注:python在[]中表示曲线使用":",如切片;表示枚举使用逗号",",如列表

  • 切片获取列表类型从N到M(不包括M)的元素组成新的列表,其中,N和M为列表类型的索引序号
  • 可以混合使用正向递增序号和逆向递减序号,一般要求N小于M。当N大于等于M时,返回空列表。
  • 当K不存在时,切片获取列表类型从N到M(不包含M)以K为步长所对应元素组成的列表。

在这里插入图片描述

2.4列表类型的操作

2.4.1 列表的操作函数

操作函数效果
len(lst)列表lst元素个数(长度)
min(lst)列表lst中的最小元素
max(lst)列表lst中的最大元素
list(x)将x转换成列表类型,x可以是字符串类型,也可以是字典类型

在这里插入图片描述

2.4.2 列表的操作方法

语法格式:

列表对象.方法名(参数列表)
方法效果
lst.append()在列表lst最后增加一个元素x
lst.insert(i,x)在列表lst第i个位置增加元素x
lst.clear()删除lst中所有元素
lst.pop(i)将列表lst中第i项元素取出并从lst中删除该元素
lst.remove(x)将列表中出现的第一个元素x删除
lst.reverse()将列表lst中的元素反转
lst.copy()生成一个新的列表,复制lst中所有的元素
  • 列表的方法主要针对列表对象,实现列表的元素的增、删、改等功能

在这里插入图片描述

  • 复制之后,对复制列表进行操作,不影响原有列表

在这里插入图片描述

除上述方法外,还可以使用del关键字对列表元素或片段进行删除
语法格式:

del 列表对象[索引序号]
del 列表对象[索引起始:索引结束]
del 列表对象[索引起始:索引结束:步长]

在这里插入图片描述

3.字典类型

3.1 字典的定义

  • python中的字典使用大括号”{}“建立,每个元素是一个键值对
  • 语法格式:
{1:1,2:2,3:3,...,键N:值N}
  • 键和值通过冒号连接,不同键值对通过逗号隔开。
    • 键可以是int类型,string类型,不可以是list(列表)类型
  • 某种角度来说,字典类型也具有和集合类似的性质,即键值对(元素)之间没有顺序且不能重复。可以简单地把字典看成元素是键值对的集合。
# d可以看作是"学号"与"姓名"的映射关系
# 即一个学号对应一个姓名
# 字典各元素没有顺序之分
d={'202101':'张三','202102':'李四','202103':'王五'}
print(d)

在这里插入图片描述

对比字典与集合:

字典类型和集合类型形式上都采用大括号表示,但如果直接使用大括号{},则生成字典类型,而不是集合类型

# 集合类型
s={1,2,3}
print(type(s))

# 字典类型
d={'202101':'张三','202102':'李四','202103':'王五'}
print(type(d))

在这里插入图片描述

# 定义空集合
s=set()
print(type(s))

# 定义空字典
d={}
e=({})
print(type(d))
print(type(e))

在这里插入图片描述

3.2 字典的索引

  • 索引是按照一定顺序检索内容的体系。列表类型采用元组顺序的位置进行索引。由于字典元素是“键值对”,即键是值的索引,因此,可以直接利用键值对关系索引元素。
  • 字典中键值对的索引语法:
= 字典对象[]
d={'201':'张三','202':'李四','203':'王五'}
name=d['202']
print(name)

在这里插入图片描述

  • 利用索引和赋值配合,可以对字典中元素进行修改,也可以向其中添加元素
d={'201':'张三','202':'李四','203':'王五'}
# 修改
d['202']='李大人'
# 添加
d['204']='小刘'
print(d)

在这里插入图片描述

  • 字典是存储可变数据量键值对的数据结构,键和值可以是任意数据类型,通过键索引和修改值。

3.3字典类型的操作

3.3.1 字典的操作函数

操作函数效果
len(d)字典d的元素个数(长度)
min(d)字典d中键的最小值
max(d)字典d中键的最大值
dict()生成一个空字典
d={'201':'张三','202':'李四','203':'王五'}
print(d)
# 键的最小值
print(min(d))
# 键的最大值
print(max(d))
# 元素个数
print(len(d))

在这里插入图片描述

3.3.2 字典的操作方法

操作方法效果
d.keys()返回所有的键信息
d.values()返回所有的值信息
d.items()返回所有键值对
d.get(key,default)键存在则返回相应值,否则返回默认值default
d.pop(key,default)键存在则返回响应值,同时删除键值对,否则返回默认值default
d.popitem()随机从字典中取出一个键值对,以元组(key,value)形式返回,同时将该键值对从字典中删除
d.clear()删除所有的键值对,清空字典

注:字典的值:

  • 字典类型没办法直接通过值进行索引,这是键值对定义的约束
  • d.keys()返回字典中所有的键信息,返回结果是python的一种内部数据类型dict_keys,专用于表示字典的键
d={'201':'张三','202':'李四','203':'王五'}
# 输出字典的键
print(d.keys())
# 输出keys的数据类型
print(type(d.keys()))

在这里插入图片描述

  • d.values()返回字典中的所有信息,返回结果是python的一种内部数据类型dict_values
d={'201':'张三','202':'李四','203':'王五'}
# 输出字典的键
print(d.values())
# 输出keys的数据类型
print(type(d.values()))

在这里插入图片描述

d={'201':'张三','202':'李四','203':'王五'}
# 输出字典的键
print(d.items())
# 输出keys的数据类型
print(type(d.items()))

在这里插入图片描述

d={'201':'张三','202':'李四','203':'王五'}
# 输出键对应的值
print(d.get('201'))
print(d)
# 输出对应值并删除
print(d.pop('201'))
print(d)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值