Python 程序设计入门(009)—— 元组的操作
目录
元组(tuple)是 Python 中另一个重要的序列结构,和列表类似,元组也是由一系列按特定顺序排序的元素组成。
元组也可以看做是不可变的列表,通常情况下,元组用于保存无需修改的内容。从形式上看,元组的所有元素都放在一对小括号中,相邻元素之间用逗号(,)分隔。
一、元组和列表的区别
元组和列表同属序列类型,且都可以按照特定顺序存放一组数据,数据类型不受限制,只要是 Python 支持的数据类型就可以。元组和列表(list)的不同之处在于:
(1)列表是可变序列,它的元素可以随时修改或者删除;元组是不可变序列,其中的元素不能修改,除非整体替换。
(2)列表可以使用 append()、extend()、insert()、remove() 和 pop() 等方法实现添加和修改列表元素,而元组没有这些方法,因为不能向元组添加和修改元素,同样也不能删除元素。
(3)列表可以使用切片访问和修改列表中的元素;元组也支持切片,但是它只支持通过切片访问元组中的元素,不支持修改。
(4)元组比列表的访问和处理速度快。所以如果只需要对其中的元素进行访问,而不进行任何修改,则使用元组。
(5)列表不能作为字典的键,而元组可以。
元组和列表最大的区别就是,列表中的元素可以进行任意修改;而元组中的元素无法修改,除非将元组整体替换掉。可以理解为,**tuple 元组是一个只读版本的 list 列表。**从总体上来说,元组的性能速度优于列表。
元组和列表可以互相转换:
tuple() 函数接收一个列表,返回一个包含相同元素的数组。
list() 函数接收一个元组,返回一个列表。
二、创建元组
1、使用赋值语句创建元组
使用赋值语句创建元组的语法格式如下:
tuplename = (element1, element2, element3, ..., elementn)
例如:
tuple1 = ("张三","李四","王五","张鹏","刘飞")
tuple2 = (20,21,22,19,20)
tuple3 = ("Python",19,[1,2],('c',2.0))
tuple4 = () # 创建一个空元组
print(tuple1)
print(tuple2)
print(tuple3)
print(tuple4)
print(type(tuple4))
运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
('张三', '李四', '王五', '张鹏', '刘飞')
(20, 21, 22, 19, 20)
('Python', 19, [1, 2], ('c', 2.0))
()
<class 'tuple'>
在 Python 中,元组通常使用一对小括号将所有元素括起来,但小括号不是必须的,只要将各元素用逗号隔开,Python 就会将其视为元组,例如:
tuple1 = "张三","李四","王五","张鹏","刘飞"
print(tuple1)
print(type(tuple1))
运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
('张三', '李四', '王五', '张鹏', '刘飞')
<class 'tuple'>
注意:当创建的元组中只有一个字符串类型的元素时,该元素后面必须要加一个逗号,否则 Python 解释器会将它视为字符串。例如:
tuple1 = ("张三")
tuple2 = ("Tom",)
print(tuple1)
print(type(tuple1))
print(tuple2)
print(type(tuple2))
运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
张三
<class 'str'>
('Tom',)
<class 'tuple'>
2、使用 tuple() 函数创建元组
Python 提供了内置函数 tuple(),用来将其它数据类型转换为元组类型。
tuple() 函数的语法格式如下:
tuple(data)
说明:data 表示可以转化为元组的数据,包括字符串、元组、range 对象等。
例如:
tuple1 = tuple() # 创建空元组
print(tuple1)
tuple2 = tuple("hello") # 将字符串转换成元组
print(tuple2)
list1 = ["Python","Java","C++","JavaScript"]
tuple3 = tuple(list1) # 将列表转换成元组
print(tuple3)
dict1 = {
"张三":20,"李四":19,"王五":20}
tuple4 = tuple(dict1) # 将字典转换成元组
print(tuple4)
range1 = range(1,6)
tuple5 = tuple(range1) # 将区间转换成元组
print(tuple5)
运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
()
('h', 'e', 'l', 'l', 'o')
('Python', 'Java', 'C++', 'JavaScript')
('张三', '李四', '王五')
(1, 2, 3, 4, 5)
三、访问元组中的元素
和列表一样,可以使用索引(Index)访问元组中的某个元素(得到的是一个元素的值),也可以使用切片访问元组中的一组元素(得到的是一个新的子元组)。
1、使用索引访问元组的元素
语法格式为:
tuplename[index]
说明:tuplename 表示元组名字,index 表示索引值。
例如:
tuple1 = ("Python","Java","C++","JavaScript")
print(tuple1[1])
print(type(tuple1[1]))
print(tuple1[-1])
print(type(tuple1[-1]))
运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
Java
<class 'str'>
JavaScript
<class 'str'>
2、使用切片访问元组元素
语法格式为:
tuplename[start : end : step]
说明:start 表示起始索引,end 表示结束索引,step 表示步长。
例如:
tuple1 = ("Python","Java","C++","JavaScript","Go")
print(tuple1[:])
print(tuple1[1:4])
print(tuple1[::-1])
print(tuple1[-1:-3:-1])
print(tuple1[1:2])
print(type(tuple1[1:2]))
运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
('Python', 'Java', 'C++', 'JavaScript', 'Go')
('Java', 'C++', 'JavaScript')
('Go', 'JavaScript', 'C++', 'Java', 'Python')
('Go', 'JavaScript')
('Java',)
<class 'tuple'>
四、修改元组
元组是不可变序列,元组中的元素不能被修改,只能创建一个新的元组去替代旧的元组。
例如:
tuple1 = ("Python","Java","C++","JavaScript")
print(tuple1)
tuple1 = ("Python","Go","Java","C++","JavaScript")
print(tuple1)
tuple2 = (1,2,3)
tuple3 = (11,12,13)
tuple4 = tuple2 + tuple3
print(tuple2)
print(tuple3)
print(tuple4)
运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
('Python', 'Java', 'C++', 'JavaScript')
('Python', 'Go', 'Java', 'C++', 'JavaScript')
(1, 2, 3)
(11, 12, 13)
(1, 2, 3, 11, 12, 13)
五、删除元组
当创建的元组不再使用时,可以通过 del 关键字将其删除,例如:
tuple1 = ("Python","Java","C++","JavaScript")
print(tuple1)
del tuple1
print(tuple1)
运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
('Python', 'Java', 'C++', 'JavaScript')
Traceback (most recent call last):
File "C:\Python\Python38\First.py", line 4, in <module>
print(tuple1)
NameError: name 'tuple1' is not defined