元组(Tuple)是python中另一个重要的序列结构。他和列表一样也是由一系列特定顺序排列的元素组成,不同之处在于它是不可变序列。
编辑搜图
请点击输入图片描述
在形式上它是由一对”()“组成的,相邻元素之间用“,”隔开。并且在同一个元组当中,元素的数据类型可以不同,因为它们之间没有任何关系。
说明
从元组和列表的定义来看,这两种数据结构比较类似。它们之间的区别主要在于元组是不可变序列,列表是可变序列。也就是说元组中的元素不可修改,而列表中的元素可以单独拿出来修改。
元组的创建
1.使用赋值运算符直接创建元组
语法格式如下:
tuplename = (element1,element2,element3,......elementN)
tuplename 表示元组的名字
element 表示元组中的元素,没有个数限制。数据类型只要是python支持的数据类型都是允许的。
注意
创建元组和列表的语法类似,区别在于元组使用的是(),而列表创建使用的是[]。
tuplename = (1,'python',[123,'helloworld!','中国万岁'],('床前明月光',))
print(tuplename)
# (1, 'python', [123, 'helloworld!', '中国万岁'], ('床前明月光',))
2.创建空元组
emptytuple = ()
空元组可以应用在为函数传递一个空值或者是返回空值时。例如函数必须传递一个元组类型的值,但是此时我们还不想给它传值时,就可以创建一个如上图所示的空元组。
3.创建数值元组
在python中我们可以使用tuple()函数直接将range()函数循环出来的值转化为数值元组。
tupel()函数的语法格式如下:
tuple(data)
其中data表示可以转化为元组类型的数据,其类型可以是range对象、字符串、元组或者其他可迭代对象。
例如创建一个80-100之间的所有偶数的元组
tuple(range(80,100,2))
#(80, 82, 84, 86, 88, 90, 92, 94, 96, 98)
元组的删除
元组删除语法格式如下
del tuplename
tuplename 表示要删除的元组的名字
del语句在实际开发中并不常见,因为python自带的垃圾回收机制会自动销毁不用的元组,所以即使我们不手动删除,系统也会自动清理的。
例如定义一个毕业班,考考结束之后他们都进入了自己心仪的大学,所以我们应该用del将其从高中删除。
seniorschool = ('关羽','张飞','赵云','黄忠','马超')
print(seniorschool)
#('关羽', '张飞', '赵云', '黄忠', '马超')
使用del 删除元组之后再去打印的话就会报not found的error。
del seniorschool
# NameError: name 'seniorschool' is not defined
访问元组元素
同列表的访问方式一样,使用print()函数口即可访问元组内的元素,例如定义一个元组并且访问元组内的所有元素
threekingdoms = (3, '三国', ['关羽','张飞','刘备'], ('魏','蜀','吴'))
print(threekingdoms)
#(3, '三国', ['关羽', '张飞', '刘备'], ('魏', '蜀', '吴'))
还可以通过元组的索引访问指定的元素
print(threekingdoms[3])
#('魏', '蜀', '吴')
同列表一样也支持切片操作
print(threekingdoms[:-1])
#(3, '三国', ['关羽', '张飞', '刘备'])
编辑搜图
请点击输入图片描述
修改元组元素
元组是不可变序列,指的是不能对它内在的元素做修改,但也不是说完全不能修改。我们可以对这个元组进行重新赋值。
NBAplayer = ('科比','詹姆斯','乔丹','杜兰特','库里','奥尼尔')
print('NBAplayer:' ,NBAplayer)
NBAplayer = ('科比','詹姆斯','乔丹','杜兰特','库里','保罗乔治')
print('new NBAplayer:' ,NBAplayer)
# NBAplayer: ('科比', '詹姆斯', '乔丹', '杜兰特', '库里', '奥尼尔')
# new NBAplayer: ('科比', '詹姆斯', '乔丹', '杜兰特', '库里', '保罗乔治')
可以看出,原先的NBAplayer的元素内容已经发生改变了。
还有一种方法是对元组进行组合连接的。就是对现在有的元组结尾处增加一个新的元组。
player = ('梅西','C罗','内马尔')
print(player)
player = player + ('莫德里奇',)
# ('梅西', 'C罗', '内马尔')
# ('梅西', 'C罗', '内马尔', '莫德里奇')
在进行元组连接时,一定注意连接的元素如果是一个时,一定不要忘记后面的逗号,不然就会出现数据类型不匹配而不能组合问题。
TypeError: can only concatenate tuple (not "str") to tuple
欢迎大家关注小编,带你每天学习不一样的python!!
编辑搜图
请点击输入图片描述
好了,今天分享就到此,明天我们一起看看元组推导式是否也像列表推导式那般无所不能!