tuple--元组
元组与字符串、列表有很多共同属性,像索引和切片,它们都是序列数据类型的两个基本组成,下面我们在学一种序列数据类型-----元组。
元组的基本操作
创建元组
Python中,元组(tuple)用一对小括号()表示,元组内的各元素以逗号分隔。栗子:
t = ()
print(type(t))
# 结果:<class 'tuple'>
t1 = ('兰博基尼', )
print(t1)
# 结果:('兰博基尼',)
print(type(t1))
# 结果:<class 'tuple'>
索引和切片
元组中索引和切片的用法跟列表和字符串类似,或者区范围内的值,后者可以指定在一段范围内,可以通过补偿没几个取一个:
t = ('奔驰','宝马','奥迪','布加迪威龙','五菱宏光','大众')
print(t[1])
# 结果:宝马
print(t[-1])
# 结果:五菱宏光
print(t[0:4])
# 结果:('奔驰', '宝马', '奥迪', '布加迪威龙')
print(t[::-1])
# 结果:('五菱宏光', '布加迪威龙', '奥迪', '宝马', '奔驰')
print(t[0:5:2])
# 结果:('奔驰', '奥迪', '五菱宏光')
但元组与列表不同的是,元组为不可变数据类型,无法原地修改其中的值。
t = ('奔驰','宝马','奥迪','布加迪威龙','五菱宏光')
print(t[1])
print(t[-1])
print(t[0:4])
print(t[::-1])
print(t[0:5:2])
t[0] = '兰博基尼'
# 结果:TypeError: 'tuple' object does not support item assignment
虽然元素是不可变数据类型,但是可以通过"+"号可以把两个元组合并为一个新的元组。
t1 = ('北京','广州','杭州')
t2 = ('南京','内蒙古','山东')
t3 = t1 + t2
print(t3)
# 结果:('北京', '广州', '杭州', '南京', '内蒙古', '山东')
print(type(t3))
# 结果:<class 'tuple'>
元组的重复:
简单来说,元组正如字符串的重复一样,当队员组使用* 时,赋值制定此术后合并为一个新的元组。
tp = ('张飞','马超','关羽','赵云')
tp1 = tp * 2
print(tp1)
# 结果: ('张飞', '马超', '关羽', '赵云', '张飞', '马超', '关羽', '赵云')
元素是否存在,in 和 not in
判断元组中是否有该元素,与字符串、列表的元素判断存在一样:
tp = ('张飞','马超','关羽','赵云')
print('刘备' in tp)
# 结果:False
print('张飞' in tp)
# 结果:True
print('曹操' not in tp)
# 结果:True
print('赵云' not in tp)
# 结果: False
序列(元组)数据类型的打包与解包
t = 1, 2, 3
x, y, z = t
print(x, y, z)
# 结果:1 2 3
上面的栗子,将1,2,3打包赋值给变量t,相当于将三个苹果打包到一个盒子内。第二行,从盒子t中将三个苹果取出来,分别交给下x, y, z, 我们成为:解包。解包这里药注意的是:盒子里有几个苹果,必须有几个对应的变量接收。多了报错,少了也报错。
平行赋值
x, y = 100 , 200
print(x,y)
# 结果为:100 200
如上列第一行所示,平行赋值就是等号右边的1,2分别赋值给等号左边的x,y。
删除元组
注意,这里说的删除仅是删除整个元组,而不是删除元组中某个元素。
t = ('山西','东北','上海')
del t[1]
# 结果报错:TypeError: 'tuple' object doesn't support item deletion
del t
print(t)
# 结果报错:NameError: name 't' is not defined,t元组已经被删除,不存在了无法查看。
总结,元组中常用的操作符:
操作符(表达式) | 描述 | 重要程度 |
---|---|---|
+ | 合并 | ** |
* | 重复 | ** |
in | 成员资格 | **** |
for i in (1, 2, 3):print(i) | 迭代 | ***** |
t[2] | 索引取值 | ***** |
t[start:stop:step] | 切片(截取) | ***** |
可以运用到元素的函数:
方法 | 描述 | 重要程度 |
---|---|---|
max(tuple) | 返回元组内最大的元素 | ** |
min(tuple) | 返回元组内最小的元素 | ** |
tuple(seq) | 将序列转换为元组 | ***** |
len(tuple) | 返回元组长度 | ***** |