当不可变序列遇上元组,所有美好环环相扣!

元组(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!!

编辑搜图

请点击输入图片描述

好了,今天分享就到此,明天我们一起看看元组推导式是否也像列表推导式那般无所不能!

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值