Python tuple元组详解 图片看不了?点击切换HTTP 返回上层
元组可以看做是不可变的列表。通常情况下,元组用于保存不可修改的内容。
从形式上看,元组的所有元素都放在一对小括号“()”中,相邻元素之间用逗号“,”分隔,如下所示:
(element1, element2, ... , elementn)
其中 element1~elementn 表示元组中的各个元素,个数没有限制,且只要是 Python 支持的数据类型就可以。从存储内容上看,元组可以存储整数、实数、字符串、列表、元组等任何类型的数据,并且在同一个元组中,元素的类型可以不同,例如:
("c.biancheng.net",1,[2,'a'],("abc",3.0))
在这个元组中,有多种类型的数据,包括整形、字符串、列表、元组。另外,我们都知道,列表的数据类型是 list,那么元组的数据类型是什么呢?通过 type() 函数,就可以查看到元组的数据类型,例如:
>>> type(("c.biancheng.net",1,[2,'a'],("abc",3.0)))
<class 'tuple'>
Python创建元组
Python 提供了多种创建元组的方法,下面一一进行介绍。= 运算符直接创建元组
和其他类型的 Python 变量一样,在创建元组时,可以使用赋值运算符“=”直接将一个元组赋值给变量,其语法格式如下:tuplename = (element1,element2,...,elementn)
其中,tuplename 表示创建的元组名,可以使用任何符合 Python 命名规则,且不和 Python 内置函数重名的标识符作为元组名。再次强调,创建元组的语法和创建列表的语法非常相似,唯一的不同在于,创建列表使用的是 [],而创建元组使用的是 ()。
例如,下面定义的元组都是合法的:num = (7,14,21,28,35) a_tuple = ("C语言中文网","http://c.biancheng.net") python = ("Python",19,[1,2],('c',2.0))
在 Python 中,元组通常都是使用一对小括号将所有元素括起来的,但小括号不是必须的,只要将各元素用逗号隔开,Python 就会将其视为元组,举个例子:
a_tuple = "C语言中文网","http://c.biancheng.net" print(a_tuple)运行结果为:
('C语言中文网', 'http://c.biancheng.net')
需要额外注意的一点是,当创建的元组中只有一个元素时,此元组后面必须要加一个逗号“,”,否则 Python 解释器会将其误认为字符串。例如:
#创建元组 a_typle a_tuple =("C语言中文网",) print(type(a_tuple)) print(a_tuple) #创建字符串 a a = ("C语言中文网") print(type(a)) print(a)运行结果为:
<class 'tuple'>
('C语言中文网',)
<class 'str'>
C语言中文网
使用tuple()函数创建元组
除了第一种最常见的创建方式外,Python还提供了 tuple() 函数来创建元组,它可以直接将列表、区间(range)等对象转换成元组。tuple 函数的语法格式如下:
tuple(data)
其中,data 表示可以转化为元组的数据,其类型可以是字符串、元组、range 对象等。例如如下代码:
# 将列表转换成元组 a_list = ['crazyit', 20, -1.2] a_tuple = tuple(a_list) print(a_tuple) # 使用range()函数创建区间(range)对象 a_range = range(1, 5) print(a_range) # 将区间转换成元组 b_tuple = tuple(a_range) print(b_tuple) # 创建区间时还指定步长 c_tuple = tuple(range(4, 20, 3)) print(c_tuple)运行结果为:
('crazyit', 20, -1.2)
range(1, 5)
(1, 2, 3, 4)
(4, 7, 10, 13, 16, 19)
Python访问元组元素
和列表完全一样,如果想访问元组中的指定元素,可以使用元组中各元素的索引值获取,例如,定义一个包含 3 个元素的元组,若想访问第 2 个元素,可以使用如下的代码:a_tuple = ('crazyit', 20, -1.2) print(a_tuple[1])运行结果为:
20
在此基础上,元组也支持采用切片方式获取指定范围内的元素,例如,访问 a_tuple 元组中前 2 个元组,可以执行如下代码:
a_tuple = ('crazyit', 20, -1.2) #采用切片方式 print(a_tuple[:2])运行结果为:
('crazyit', 20)
有关切片的语法格式以及用法,已在《Python序列》一节中做了详细介绍。Python修改元组元素
前面已经讲过,元组是不可变序列,元组中的元素不可以单独进行修改。但是,元组也不是完全不能修改。比如,我们可以对元组进行重新赋值:
a_tuple = ('crazyit', 20, -1.2) print(a_tuple) #对元组进行重新赋值 a_tuple = ('c.biancheng.net',"C语言中文网") print(a_tuple)运行结果为:
('crazyit', 20, -1.2)
('c.biancheng.net', 'C语言中文网')
另外,还可以通过连接多个元组的方式向元组中添加新元素。例如:
a_tuple = ('crazyit', 20, -1.2) print(a_tuple) #连接多个元组 a_tuple = a_tuple + ('c.biancheng.net',) print(a_tuple)运行结果为:
('crazyit', 20, -1.2)
('crazyit', 20, -1.2, 'c.biancheng.net')
a_tuple = ('crazyit', 20, -1.2) #元组连接字符串 a_tuple = a_tuple + 'c.biancheng.net' print(a_tuple)运行结果为:
Traceback (most recent call last):
File "C:\Users\mengma\Desktop\1.py", line 4, in <module>
a_tuple = a_tuple + 'c.biancheng.net'
TypeError: can only concatenate tuple (not "str") to tuple
Python删除元组
当已经创建的元组确定不再使用时,可以使用 del 语句将其删除,例如:a_tuple = ('crazyit', 20, -1.2) print(a_tuple) #删除a_tuple元组 del(a_tuple) print(a_tuple)运行结果为:
('crazyit', 20, -1.2)
Traceback (most recent call last):
File "C:\Users\mengma\Desktop\1.py", line 4, in <module>
print(a_tuple)
NameError: name 'a_tuple' is not defined