目录
11.1.1 理解元组类型
11.1.2 元组的类型名
11.1.3 元组的定义
11.1.4 元组的解包
11.1.5 遍历可迭代对象
11.1.6 本节知识要点
11.1.7 系统学习python
11.1.1 理解元组类型
元组与列表有着相同的数据结构,区别在于,元组是静态的数据类型,而列表是动态的数据类型。关于元组与列表的区别,会在11.4节中进行详细讲解。Python中的元组类型是用()符号括住的一个数据集合,集合中的元素以英文逗号进行分隔。与列表一样,在元组类型中可以包含任意的数据类型:
Python
# 定义一个元组变量container
container = (1,'2',3.0,True)
# 元组中的元素可为任意数据类型
元组与列表,以及字符串一样,都是一种线性的顺序表结构:
对线性的顺序表结构不是很熟悉的同学,可以复习9.1节《字符串的基础概念》的内容。
在线性的序列结构中,都可以通过索引的方式来访问数据集合中的元素:
Python
# 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中,凡是可以对集合中的元素进行遍历的数据类型,都是可迭代对象。所谓的遍历,就是逐一地访问集合中的元素。
代码实例:
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) 直接定义法
所谓的直接定义法,是直接通过()符号来定义元组:
Python
# __desc__ = 通过()符号来直接定义列表
container = (1, '2', 3.0, True)
在元组中只存在一个元素时,后面必须加一个英文的逗号。
代码实例:
# __desc__ = 元组中只存在一个元素时,后面必须加一个逗号
container = (1,)
# 如果不加逗号,那么()符号只是括号,而不是元组的别名符号
container = (1)
# 此时的container是一个整型变量
# container = (1) 相当于 container = 1
列表类型可以包含任意地数据类型,现在通过直接定义法来定义嵌套的元组。所谓嵌套的元组,是指在元组中包含元组。
代码实例:
Python
# __desc__ = 定义嵌套元组
# 定义一个二维的元组
container = ((1,2,3),(4,5,6))
# 定义一个三维的元组
container = (((1,2,3),(4,5,6)))
在定义元组时,也可以直接将()去掉,Python会自动地将逗号分隔的元素视为一个元组。
代码实例:
Python
# __desc__ = 定义元组时将()去掉
# Python会自动地将逗号分隔的元素列表视为一个元组
container = 1,2,3
# 只存在一个元素时,后面必须带上一个逗号
container = 1,
type(container)
# type的输出为<class 'tuple'>
10.1.4 元组的解包
将元组赋值给其它变量时,Python会自动地对元组执行解包。理解解包的概念,先看一则简单的代码实例:
Python
# __desc__ = 理解元组的解包
# 定义一个元组
container = 1,2,3
a,b,c = container
# a的值为1,b的值为2,c的值为3
代码讲解:
(1) 元组解包就是将元组进行拆解,然后将元组中的元素按序进行赋值
(2) 在代码a,b,c = container中,将元组container中的元素按序赋值给左边的变量
将元组进行解包赋值时,赋值操作符左边的变量个数必须与元组中的元素个数一致,否则会抛出异常信息。
元组中只存在一个元素时,如何解包?
代码实例:
Python
# __desc__ = 对只包含一个元素的元组进行解包
# 定义一个只包含一个元素的元组
container = 1,
# 变量后面加一个逗号即可
element,= container
# element指向的值为1
11.1.4 遍历可迭代对象
Python中的简单数据类型,都是不可迭代的对象。迄今学过的简单数据类型有整型,浮点类型,布尔类型。Python中的复合数据类型都是可迭代的对象。对于可迭代对象,可以在for循环结构中对集合中的元素进行遍历。
代码实例:
Python
# __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
薯条老师简介:资深技术专家,技术作家,著有《Python零基础入门指南》,《Java零基础入门指南》等技术教程。薯条老师的博客:http://www.chipscoco.com, 系统学习后端,爬虫,数据分析,机器学习、量化投资。