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

    技术2022-07-10  122

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

    编辑搜图

    请点击输入图片描述

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

     

     

    Processed: 0.010, SQL: 9