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

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

作者: 途途途途 | 来源:发表于2020-07-01 10:59 被阅读0次


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

seniorschool = ('关羽','张飞','赵云','黄忠','马超')del seniorschoolprint(seniorschool)# NameError: name 'seniorschool' is not defined

访问元组元素

同列表的访问方式一样,使用print()函数口即可访问元组内的元素,例如定义一个元组并且访问元组内的所有元素

threekingdoms = (3, '三国', ['关羽','张飞','刘备'], ('魏','蜀','吴'))print(threekingdoms)#(3, '三国', ['关羽', '张飞', '刘备'], ('魏', '蜀', '吴'))
还可以通过元组的索引访问指定的元素
threekingdoms = (3, '三国', ['关羽','张飞','刘备'], ('魏','蜀','吴'))print(threekingdoms[3])#('魏', '蜀', '吴')

同列表一样也支持切片操作

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 + ('莫德里奇',)print(player)# ('梅西', 'C罗', '内马尔')# ('梅西', 'C罗', '内马尔', '莫德里奇')

注意

在进行元组连接时,一定注意连接的元素如果是一个时,一定不要忘记后面的逗号,不然就会出现数据类型不匹配而不能组合问题。

TypeError: can only concatenate tuple (not "str") to tuple

欢迎大家关注小编,带你每天学习不一样的python!!

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

相关文章

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

    元组(Tuple)是python中另一个重要的序列结构。他和列表一样也是由一系列特定顺序排列的元素组成,不同之处在...

  • 元组

    一、什么是元组 (一)含义 元组是python内置的数据结构之一,是一个不可变序列 补充:不可变序列与可变序列 不...

  • 【Python_67-70】元组【b站搬运_子木】

    什么是元组? 元组不可增删改(是不可变序列!列表和字典可变) 元组用()定义 vs 列表用 [ ] 定义 可变序列...

  • py_08_元组相关操作和方法(count index)

    元组和namedtuple命令元组 列表属于可变序列,可以任意修改列表中的元素。元组属于不可变序列,不能修改元组中...

  • python语法入门二

    元组 字符串 格式化 序列 元组tuple:不可变 字符串:不可变 格式化 序列

  • Python数据结构:序列(列表[]、元组())与映射(字典{}

    一、概述:Python中两种基本的数据结构是序列和映射,序列包含:可变的列表和不可变的元组;而当序列不够用时就出现...

  • python数据类型

    可变序列:列表(list),字典(dict),集合(set)不可变序列:元组(tuple),字符串(str)有序序...

  • 条件判断与函数

    简要回顾 变量序列:元组是不可变序列,字符串也是不可变序列;列表是可变序列语句: 赋值语句 运行函数/方法语句 条...

  • 01.03 笔记-元组

    元组 什么是元组(tuple) python提供的容器型数据类型,不可变并且有序的序列。(元组就是不可变的列表) ...

  • 9.Python基础语法---05序列

    序列 序列 有序。字符串, 列表, 元组 都属于序列下面主要针对列表与元组进行说明 列表(可变) 列表定义 列表由...

网友评论

      本文标题:当不可变序列遇上元组,所有美好环环相扣!

      本文链接:https://www.haomeiwen.com/subject/rzlcqktx.html