Python基础教程

第一章: 环境搭建,安装Python

第二章: 挑选一款趁手的IDE

第三章: 计算机基础知识

第四章: 命令行基础知识

第五章: 从全局把握Python

第六章: Python语言基础

第七章: Python流程控制

第八章: Python数据类型与运算

第九章: Python字符串类型

第十章: Python列表类型

第十一章: Python元组类型

第十二章: Python字典类型

第十三章: Python集合类型

第十四章: Python函数处理

第十五章: Python文件处理

第十六章: Python面向对象

第十七章: Python异常处理

第十八章: Python模块处理

第十九章: Python高级编程

第二十章: Python项目实战

首页 > Python基础教程 > 第十一章: Python元组类型 > 11.1节: 元组的基础概念

11.1节: 元组的基础概念

薯条老师 2020-05-12 15:09:50 235688 0

编辑 收藏

广州番禺Python, Java小班周末班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人,学员的平均就业薪资有11K。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Python机器学习,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6

11.1.1 理解元组类型

元组与列表有着相同的数据结构,区别在于,元组是静态的数据类型,而列表是动态的数据类型。关于元组与列表的区别,会在11.4节中进行详细讲解。Python中的元组类型是用()符号括住的一个数据集合,集合中的元素以英文逗号进行分隔。与列表一样,在元组类型中可以包含任意的数据类型:
# 定义一个元组变量container
container = (1,'2',3.0,True)
# 元组中的元素可为任意数据类型

image.png

元组与列表,以及字符串一样,都是一种线性的顺序表结构:


image.png

对线性的顺序表结构不是很熟悉的同学,可以复习9.1节《字符串的基础概念》的内容。

在线性的序列结构中,都可以通过索引的方式来访问数据集合中的元素:

# 1.字符串是一种线性的序列结构
love = 'I Love You'
# 读取字符串中的第一个字符
char = love[0]
 
 
# 2.列表也是一种线性的序列结构
container = [1, '2', 3.0, True]
# 读取列表中的第一个元素
element = container[0]

 
# 3.元组也是一种线性的序列结构
container = (1, '2', 3.0, True)
# 读取元组中的第一个元素
element = container[0]

Python中的索引从0开始编号,0表示第一个位置,1表示第二个位置。Python也支持负数索引,负数索引从-1开始编号,-1表示倒数第一个位置,-2表示倒数第二个位置,以此类推。

11.1.2 元组的类型名

在交互模式中通过type来输出字符串的类型名:
>>> container = (1, '2', 3.0, True)
>>> type(container)
<class 'tuple'>

从输出可知,元组的类型名为tuple。

11.1.3 元组的定义

对元组进行定义,主要有对象定义法和直接定义法。
(1) 对象定义法
元组的类型名是tuple,可以直接在交互模式中执行help(tuple)来查找tuple的定义及用法:
class tuple(object)
|  tuple(iterable=(), /)
|
|  Built-in immutable sequence.
|
|  If no argument is given, the constructor returns an empty tuple.
|  If iterable is specified the tuple is initialized from iterable's items.
|
|  If the argument is a tuple, the return value is the same object.
在交互模式的输出中,tuple(iterable=(),/)的形式就是对象定义法。参数iterable表示可迭代对象。迄今学过的数据类型中,字符串、列表、元组都是一种可迭代对象。在Python中,凡是可以对集合中的元素进行遍历的数据类型,都是可迭代对象。所谓的遍历,就是逐一地访问集合中的元素。
代码实例:
# __desc__ = 通过对象定义法定义元组
 
# 1.定义空元组
# 不传递任何参数时,定义的是空元组
container = tuple()
 
# 2.传递字符串类型定义元组,字符串是可迭代对象
letters = tuple("abcdefg")
"""
letters的输出为('a','b','c','d','e','f','g')
从输出可以看出,是逐一地将字符串中的字符添加进列表中
"""
 
# 3.传递列表类型定义元组,列表也是可迭代对象
container = tuple([1, '2', 3.0, True])
# container的输出为(1, '2', 3.0,True)
(2) 直接定义法
所谓的直接定义法,是直接通过()符号来定义元组:
# __desc__ = 通过()符号来直接定义列表
container = (1, '2', 3.0, True)
 
在元组中只存在一个元素时,后面必须加一个英文的逗号。
代码实例:
# __desc__ = 元组中只存在一个元素时,后面必须加一个逗号
container = (1,)
 
# 如果不加逗号,那么()符号只是括号,而不是元组的别名符号
container = (1)
# 此时的container是一个整型变量
# container = (1) 相当于 container = 1
列表类型可以包含任意地数据类型,现在通过直接定义法来定义嵌套的元组。所谓嵌套的元组,是指在元组中包含元组。
代码实例:
# __desc__ = 定义嵌套元组
 
# 定义一个二维的元组
container = ((1,2,3),(4,5,6))
 
# 定义一个三维的元组
container = (((1,2,3),(4,5,6)))
在定义元组时,也可以直接将()去掉,Python会自动地将逗号分隔的元素视为一个元组。
代码实例:
# __desc__ = 定义元组时将()去掉
 
# Python会自动地将逗号分隔的元素列表视为一个元组
container = 1,2,3
 
# 只存在一个元素时,后面必须带上一个逗号
container = 1,
type(container)
# type的输出为<class 'tuple'>

10.1.4 元组的解包

将元组赋值给其它变量时,Python会自动地对元组执行解包。理解解包的概念,先看一则简单的代码实例:
# __desc__ = 理解元组的解包
 
# 定义一个元组
container = 1,2,3
a,b,c = container
# a的值为1,b的值为2,c的值为3
代码讲解:
(1) 元组解包就是将元组进行拆解,然后将元组中的元素按序进行赋值
(2) 在代码a,b,c = container中,将元组container中的元素按序赋值给左边的变量
将元组进行解包赋值时,赋值操作符左边的变量个数必须与元组中的元素个数一致,否则会抛出异常信息。
元组中只存在一个元素时,如何解包?
代码实例:
# __desc__ = 对只包含一个元素的元组进行解包
 
# 定义一个只包含一个元素的元组
container = 1,
 
# 变量后面加一个逗号即可
element,= container
# element指向的值为1

11.1.4 遍历可迭代对象

Python中的简单数据类型,都是不可迭代的对象。迄今学过的简单数据类型有整型,浮点类型,布尔类型。Python中的复合数据类型都是可迭代的对象。对于可迭代对象,可以在for循环结构中对集合中的元素进行遍历。
代码实例:
# __desc__ = 在for循环中遍历元组
 
# 定义一个元组变量
container = 1,2,3,4,5
 
# 在for循环中遍历元组中的元素
for _ in container:
  print(_)
 
# 程序的输出为
1
2
3
4
5

11.1.5 本节知识要点

(1) 元组类型是一种数据集合,将集合中的元素按先后顺序进行排列
(2) Python中使用()括住的为元组类型,()中的元素以英文逗号进行分隔
(3) 元组的类型名是tuple,同字符串以及列表一样,元组也是线性的序列结构
(4) 可以通过对象定义法和直接定义法来定义元组
(5) 简单数据类型是不可迭代的,Python中的复合数据类型都是可迭代的对象
(6) 对于可迭代对象,可以在for循环中遍历集合中的元素

11.1.6 最具实力的小班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习打算参加小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。

(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,免费领取课程大纲
(3) Java后端开发工程师高薪就业班,月薪11K-20K, 免费领取课程大纲
(4) Python大数据分析,量化投资就业班,月薪12K-25K,免费领取课程大纲

扫码免费领取Python学习资料:


欢迎 发表评论: