目录
8.1.1 理解元组类型
8.1.2 元组的类型名
8.1.3 元组的定义
8.1.4 元组的解包
8.1.5 元组是可迭代的
8.1.6 假期就这么结束了
8.1.1 理解元组类型
元组与列表有着相同的数据结构,区别在于,元组是不可变的数据类型,而列表是可变的数据类型。Python中的元组类型是用()符号括住的一个数据集合,集合中的元素以英文逗号进行分隔。与列表一样,在元组类型中可以包含任意的数据类型:
# 定义一个元组变量container
container = (1,'2',3.0,True)
# 元组中的元素可为任意数据类型
元组与列表,以及字符串一样,都是一种线性的顺序表结构(序列结构):
对线性的顺序表结构不是很熟悉的同学,可以复习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表示倒数第二个位置,以此类推。博主正在CSDN写一套Python高级爬虫+安卓逆向的教程:
高级爬虫+安卓逆向,手把手教你成为一流的爬虫高手https://blog.csdn.net/thereisadownloader/category_12930002.html
8.1.2 元组的类型名
在交互模式中通过type来输出字符串的类型名:
>>> container = (1, '2', 3.0, True)
>>> type(container)
<class 'tuple'>
从输出可知,元组的类型名为tuple。
8.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表示可迭代对象。迄今学过的数据类型中,字符串、列表、元组都是一种可迭代的数据类型。
代码示例:
# __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)))
在定义元组时,也可以省略小括号。
代码示例:
# __desc__ = 定义元组时可省略小括号()# 以下1,2,3是一个元组
container = 1,2,3# 元组中只存在一个元素时,后面必须带上一个逗号
container = 1,
8.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
8.1.5 元组是可迭代的
Python中的简单数据类型,都是不可迭代的对象。迄今学过的简单数据类型有整型,浮点类型,布尔类型,空类型。 博主正在CSDN写一套Python高级爬虫+安卓逆向的教程:
高级爬虫+安卓逆向,手把手教你成为一流的爬虫高手https://blog.csdn.net/thereisadownloader/category_12930002.html
Python中的字符串,列表,元组等都是可迭代的类型。对于可迭代对象,可在for循环中对集合中的元素进行迭代。
代码示例:
# __desc__ = 在for循环中迭代元组# 构造一个元组对象
container = 1,2,3,4,5# 在for循环中迭代元组中的元素
for element in container:print(element)"""
程序的输出为:
1
2
3
4
5
"""
8.1.6 假期就这么结束了
跟薯条老师学后端开发,高级爬虫(JS逆向+安卓逆向),数据分析,大数据开发,量化交易,以及机器学习+深度学习算法。坚定自己的学习目标,保持学习的热情,那你成为高手只是时间问题。
薯条老师的学生在南方电网,林氏家居,京东,阿里等大厂。想系统学习Python和Java的同学,可以移步薯条老师的个人技术博客:薯条老师的个人技术博客http://www.chipscoco.com/ 对本节教程有任何不懂的同学,亦可在评论区中进行评论。薯条老师会详细解答你们提出的每一个问题。