python快速编程入门 • 第5章 组合数据类型
文章目录
5.1 认识组合数据类型
Python中常用的序列类型
有字符串
、列表
和元组
。
Python中的序列支持双向索引:正向
递增索引和反向
递减索引正向递增索引从左向右依
次递增
,第一个元素的索引为0
,第二个元素的索引为1
,以此类推;反向递减索引从右向左依次递减,从右数第一个元素的索引为-1,第二个元素的索引为-2,以此类推。
Python集合具备确定性
、互异性
和无序性
三个特性。
Python要求放入集合中的元素必须是不可变类型,Python中的整型
、浮点型
、字符串类型
和元组
属于不可变类型,列表
、字典
及集合本身都属于可变的数据类型。
确定性: 给定一个集合,那么任何一个元素是否在集合中就确定了。
互异性: 集合中的元素互不相同。
无序性: 集合中的元素没有顺序,顺序不同但元素相同的集合可视为同一集合。
映射类型以键值对
的形式存储元素,键值对中的键与值之间存在映射关系。
字典(dict)是Python唯一的内置映射类型,字典的键必须遵守以下两个原则:
每个键只能对应一个值,不允许同一个键在字典中重复出现。
字典中的键是不可变类型。
5.2 列表
5.2.1 创建列表
Python列表的创建方式非常简单,既可以直接使用中括号“[]
”创建,也可以使用内置的list()
函数快速创建。
list_one = [] # 使用[]创建空列表
li_two = list() # 使用list()创建空列表
在Python中,支持通过for…in…
语句迭代获取数据的对象就是可迭代对象
。目前,我们学习过可迭代的类型有字符串和列表,后续学习的集合、字典、文件也是可迭代类型的对象。使用isinstance()
函数可以判断目标是否为可迭代对象,返回True
表示为可迭代对象。
from collections.abc import Iterable
ls = [3,4,5]
print(isinstance(ls, Iterable))
5.2.2 访问列表元素
列表中的元素可以通过索引或切片这两种方式进行访问,也可以在循环中依次访问。
list_one = ["Java", "C#", "Python", "PHP"]
print(list_one[1])
print(list_one[1])
for li in li_one:
print(li, end=' ')
5.2.3 添加列表元素
向列表中添加元素是非常常见的一种列表操作,Python提供了append()
、extend()
和insert()
这几个方法。
list_one = ["Java", "C#", "Python", "PHP"]
list_one.append("C++")
list_one.extend([["Android", "IOS",])
list_one.insert(2,“HTML")
5.2.4 元素排序
列表的排序是将元素按照某种规定进行排列。列表中常用的排序方法有sort()
、reverse()
、sorted()
。
li_one = [6, 2, 5, 3]
list_one.sort()
li_two = sorted(li_one)
li_one.reverse()
5.2.5 删除列表元素
删除列表元素的常用方式有del
语句、remove()
方法、pop()
方法和clear()
方法。
li_one = [6, 2, 5, 3, 3]
del li_one[0]
li_one.remove(3)
li_one.pop()
li_one.clear()
5.2.6 列表推导式
列表推导式是符合Python语法规则的复合表达式
,它用于以简洁的方式根据已有的列表构建满足特定需求的列表
。列表推导式的基本格式如下:
[exp for x in list]
列表推导式还可以结合if判断语句或for循环嵌套,生成更灵活的列表。
带有if语句的列表推导式
for循环嵌套的列表推导式
带有if语句与for循环嵌套的列表推导式
5.3 元组
元组的表现形式为一组包含在圆括号“()
”中、由逗号分隔的元素,元组中元素的个数、类型不受限制。除了使用()构建元组外,还可以使用内置函数tuple()
构建元组。
t1 = () # 使用()构建元组
t2 = tuple() # 使用tuple构建元组
当使用圆括号“()
”创建元组时,如果元组中只包含一个元素,那么需要在该元素的后面添加逗号
,从而保证Python解释器能够识别其为元组类型。
t1 = ('python')
t2 = ('python',)
print(type(t1))
print(type(t2))
运行结果:
<class 'str'>
<class 'tuple'>
5.4 精彩实例
5.4.1 十大歌手
为丰富校园文化生活,学校拟组织一场歌手大赛,从参赛选手中选拔出十名相对突出的学生,授予“校园十大歌手”称号。比赛之中设置有评委组,每名选手演唱完毕之后会由评委组的十名评委打分。为保证比赛公平公正,防止作弊和恶意打分,计算得分时会先去掉最高分和最低分,再计算平均分。
本实例要求编写程序,实现根据需求计算平均分的功能。
5.4.2 神奇魔方阵
魔方阵又称纵横图,是一种n行n列、由自然数1~n×n组成的方阵,该方阵中的数符合以下规律:
- 方阵中的每个元素都不相等。
- 每行、每列以及主、副对角线上的个元素之和都相等。
本实例要求编写程序,输出一个5行5列的魔方阵。
5.5 集合
Python的集合(set
)本身是可变类型
,但Python要求放入集合中的元素必须是不可变类型。
大括号“{}
”或内置函数set()
均可构建集合。
s1 = {1} # 使用{}构建集合
s2 = set([1,2]) # 使用set构建元组
需要注意,使用{}不能创建空集合
(不包含元素的{}创建的是字典变量),空集合只能利用set()
函数创建。
set_demo1 = {}
set_demo2 = set()
print(type(set_demo1))
print(type(set_demo2))
运行结果:
<class 'dict'>
<class 'set'>
集合是可变的,集合中的元素可以动态增加
或删除
。Python提供了一些内置方法来操作集合,常见内置方法如下:
集合也可以利用推导式创建,集合推导式的格式与列表推导式相似,区别在于集合推导式外侧为大括号“{}”
,具体如下:
{exp for x in set if cond}
5.6 字典
5.6.1 创建字典
字典的表现形式为一组包含在大括号“· {}·”中的键值对,每个键值对为一个字典元素,每个元素通过逗号“,
”分隔,每对键值通过“:
”分隔,除了使用“{}”创建字典还可以使用内置函数dict
创建字典。
d1 = {'A': 123, 12: 'python'} # 使用{}构建集合
d2 = dict({'A': '123', 'B': '135'}) # 使用dict构建元组
需要注意,字典元素无序,键值必须唯一
5.6.2 字典的访问
字典的值可通过“键
”或内置方法get()
访问。
d2 = dict({'A': '123', 'B': '135'})
d2['A']
d2.get('B')
字典涉及的数据分为键
、值
和元素(键值对)
,除了直接利用键访问值外,Python还提供了内置方法keys()
、values()
和items()
。
5.6.3 元素的添加和修改
字典支持通过为指定的键赋值
或使用update()
方法添加或修改
元素,下面分别介绍如何添加和修改字典元素。
通过键添加元素: 字典变量[键] = 值
使用update()添加元素: dict.update(key=value)
add_dict = {'name': 'Jack','age':23,'height':185}
add_dict['sco'] = 98
add_dict.update(sco=98)
修改字典元素的本质是通过键
获取值
,再重新对元素进行赋值。修改元素的操作与添加元素的操作相同。
5.6.4 字典元素的删除
Python支持通过pop()
、popitem()
和clear()
方法删除字典中的元素。
pop()
:根据指定键值删除字典中的指定元素
popitem()
:随机删除字典中的元素
clear()
:清空字典中的元素
5.6.5 字典推导式
字典推导式外侧为大括号“{}
”,且内部需包含键
和值
两部分,具体格式如下:
{new_key:new_value for key,value in dict.items()}
利用字典推导式可快速交换字典中的键和值,示例如下:
old_dict = {'name': 'Jack','age':23,'height':185}
new_dict = {value:key for key,value in old_dict.items()}
print(new_dict)
运行结果:
{'Jack': 'name', 23: 'age', 185: 'height'}
5.7 精彩实例
5.7.1 青春有你
如今两年偶像选秀节目风头正盛,吸引了许多喜欢唱跳、有一颗明星梦想的少年少女参加,青春有你正是节目之一。青春有你采用计票机制
,选手获得的票数越多,排名就越靠前。
本实例要求编写程序,接收选手的姓名和票数,输出排序后的成绩
。
5.7.2 手机通讯录
通讯录是记录了联系人姓名和联系方式的名录,手机通讯录是最常见的通讯录之一,人们可以在通讯录中通过姓名查看相关联系人的联系方式等信息,也可以在其中新增联系人,或修改、删除联系人信息。
本实例要求编写程序,实现具备添加
、查看
、修改
以及删除
联系人信息功能的手机通讯录。
5.8 组合数据类型与运算符
Python中针对数字类型的运算符对组合数据类型同样适用,包括+
、*
、in
、not in
。
字符串、列表和元组使用“
+
”运算符,会·对数据进行拼接·
字符串、列表和元组使用“*
”运算符,会对数据进行整数倍拼接
“in
”“not in
”运算符称为成员运算符,用于判断某个元素是否属于某个变量
5.9 本章小结
本章首先简单认识了Python中的组合数据类型
,然后分别介绍了Python中常用的组合数据类型:列表
、元组
、集合
和字典
的创建和使用。
最后介绍了组合数据类型
与运算符
的相关知识。
本文来自博客园,作者:明金同学,转载请注明原文链接:https://www.cnblogs.com/vmuu/p/18599435
公众号:【明金同学】