【python基础】组合数据类型:元组、列表、集合、映射

多个数据(可以是不同类型)组合成一个整体的数据集合称为组合数据类型,组合数据类型分为三类:序列类型、集合类型、映射类型。

一. 序列类型

Python中很多数据类型都是序列类型,其中比较重要的是字符串 (str)、元组(tuple)、列表(list)。

  • 字符串可以看成一个单字符的有序组合,属于序列类型,同时也是一种基本数据类型。
  • 元组是包含0个或多个数据项的不可变序列类型,即元组一旦生成,任何数据项都不可替换或删除。
  • 列表则是一个可以修改数据项的序列类型,使用非常灵活。

只要是序列类型,都可以使用相同的索引体系,Python中的序列支持双向索引,即正向递增序号和反向递减序号。

在这里插入图片描述

正向递增索引从左到右依次递增,第1个元素的索引号为0,第2个元 素的索引号为1,以此类推。反向递减索引从右到左依次递减,最后一个 元素的索引号为-1,倒数第二个为-2,以此类推。

序列类型有12个通用的操作符和函数,如表所示。

在这里插入图片描述

1. 元组类型

元组一旦创建就不能被修改。一般用于表达固定数据项、函数返回值、多变量同时赋值、循环遍历等情况。

Python构建元组的方式非常简单,可以用tuple()函数构建,

  • tuple()函数中的参数是一个可迭代的数据,若没有传入参数,则创建空元组。
  • 可以直接用圆括号包含多个使用逗号隔开的元素来创建元组。
  • 非空元组的括号可以省略。
>>> tuple[(1,2,3)]
tuple[1, 2, 3]

>>> tuple[1,2,3]
tuple[1, 2, 3]

>>> tuple('Python')
('P', 'y', 't', 'h', 'o', 'n')

>>> st='学号','姓名','专业'
>>> st
('学号', '姓名', '专业')

>>> course=('高等数学','英语','python程序设计')
>>> course[1]
'英语'
>>> course[0]
'高等数学'

 

2. 列表类型(list)

列表(list)是包含0个或多个对象引用的有序序列,

  • 与元组不同, 列表的长度和内容都是可变的,可自由对列表中的数据项进行增加、删除 或替换
  • 列表没有长度限制,元素的类型可以各不相同,使用非常灵活。

2.1. 列表创建

# 1. list()函数将已有的元组字符串转换为列表。
# 元组转换位列表
>>> tuple[1,2]
tuple[1, 2]
>>> tp=(10,20,30)
>>> list(tp)
[10, 20, 30]

# 2. 直接 用[]号创建 存放不同元素
>>> ls=[12,'abc',['red','green']]
>>> ls[2][1]
'green'

 

2.2 列表操作

# 浅拷贝
>>> lt = ls
# 修改值
>>> ls[1]='python'
>>> ls[1]
'python'
>>> lt 
[12, 'python', ['red', 'green']]

# 深拷贝
# 或通过list()或 [ ]创建才会生成新列表
>>> lt =ls.copy()
>>> lt
[12, 'python', ['red', 'green']]

在这里插入图片描述

  1. 替换:单个元素替换;范围替换;范围步长替换、
  2. 删除:范围删除;范围步长删除
  3. 列表叠加;列表翻倍:所有元素重复n倍;列表追加、列表在某个位置插入
  4. 清空列表;取出列表指定位置元素并删除;删除第一个出现的元素x
  5. 列表复制;
  6. 列表反转(不需要参数);列表排序。
>>> lt.reverse(1)
TypeError: list.reverse() takes no arguments (1 given)

>>> lt.reverse()
>>> lt
['1', 1, ['red', 'green'], 'python', 12, ['red', 'green'], 'python', 12]

 

2.3. 列表元素遍历 ing

对列表进行遍历使用for-in结构,可对列表中的元素按序访问。

如果对元素访问时不需要删除操作,则可直接遍历列表。如果对元素 访问时涉及删除或改变元素位置等操作,则应先对原列表进行复制,在复 制的列表中遍历,而在原列表中操作,这样可以保证每个元素都能被遍历 并进行操作。

元素列表求平均值
删除散的倍数

 

二. 集合类型(set)

定义

  • 集合中的元素不可重复,元素类型只能是固定数据类型,不能是可变数据类型
  • 集合是无序的组合,没有索引和位置的概念,不能分片,集合中的元素可以动态增加或删除。

创建

  • 集合用大括号{}表示,各元素之间用逗号隔开。
  • set()函数进行集合的创建
>>> s1={100,'python',2.9}
>>> s1
{'python', 2.9, 100}

>>> s2=set('python')
>>> s2
{'p', 'h', 'o', 't', 'y', 'n'}

>>> s3=set(('python',123))
>>> s3
{'python', 123}

 

集合的操作符有10个
在这里插入图片描述

返回一个新集合或更新S

  1. 包含在S但不含T中元素:-
  2. 同时包含在S且T中的元素:&
  3. 取非交集:^
  4. 两者所有元素:|
  5. 子集与真子集:>、>=

 

三. 映射类型(map)

  • 映射类型每一个元素都是一个键-值对,即元素是(key,value),元素之间是无序的
  • 键(key)表示一个属性,也可理解为一个类别或项目,值(value) 是属性的内容。键-值对将映射关系结构化,用于存储和表达。
  • 在实际应用中有很多键-值对的案例,如通信录中姓名和电话号码、 用户信息中用户名与密码、邮政编码与运输成本、国家名称与首都等。

1. 字典创建

这种通过任意键信息查找一组数据中值信息的过程称为映射,在 Python中,映射类型主要以字典(dict)进行体现。

  • 字典是包含0个或多个键-值对的无序集合,没有长度限制,可以根据键索引值的内容,且键具有唯一性
  • Python中可以通过函数dict()来创建空字典,也可以通过大括号{} 来创建。
>>> student={}
>>> student=dict()

>>> d={"中国":"北京","美国":"华盛顿"}


# 获取某一个元素
>>> d["中国"]
'北京'

# 修改值
>>> d["中国"] = "上海"
>>> d["中国"]
'上海'

输出顺序:字典输出数据的顺序可能与创建之初的顺序不一致。其原因是字典是集合类型的延续,所以各元素之间没有顺序之分。

 

2. 字典操作

在这里插入图片描述

  1. 返回键列表;值列表;键值列表
  2. 获取某个键的值;元组形式返回
  3. 获取值,并删除此键值对;删除所有;删除某一个
  4. 判断key是否存在

 

>>> d={"中国":"北京","美国":"华盛顿","英国":"伦敦"}
>>> d
{'中国': '北京', '美国': '华盛顿', '英国': '伦敦'}

>>> d.keys()
dict_keys(['中国', '美国', '英国'])
>>> list(d.values())
['北京', '华盛顿', '伦敦']
>>> list(d.items())
[('中国', '北京'), ('美国', '华盛顿'), ('英国', '伦敦')]


>>> d.get('中国','上海')
'北京'
>>> d.pop('法国','巴黎')
'巴黎'

>>> d
{'中国': '北京', '美国': '华盛顿', '英国': '伦敦'}
>>> d.pop('中国','巴黎')
'北京'

>>> d
{'美国': '华盛顿', '英国': '伦敦'}
>>> d.popitem()
('英国', '伦敦')
>>> d
{'美国': '华盛顿'}

>>> del d['美国']
>>> d
{}

 

3. 字典遍历 ing

3.1. 计算消费额

3.2. 词频统计

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

roman_日积跬步-终至千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值