Python中元组(tuple)的详细使用

文章目录

  • 前言
  • 一、元组的创建
  • 1.使用圆括号()
  • 2.使用tuple()函数
  • 二、元组元素的访问
  • 1.使用索引
  • 2. 使用切片
  • 三、元组的修改
  • 1.更改元组元素值
  • (1)元组->列表->修改->元组
  • (2)重新赋值
  • (3)更改元组中可变数据的元素值
  • 2.连接、重复元组
  • 四、元组的删除
  • 五、元组的其他操作
  • 1.元组的一维遍历和二维遍历
  • 2.判断元素是否存在
  • 3.元组的内置函数
  • (1)len()、max()、min()、count()函数
  • (2)index()函数
  • 六、元组和列表的区别
  • 前言

    元组是Python中的有序序列,元素不可更改。一旦创建了元组,就无法对其元素进行添加、删除、修改、排序等操作,也意味着元组是安全的。

    一、元组的创建

    1.使用圆括号()

  • 每个元素使用逗号间隔。
  • 在Python中,用逗号隔开的无其他标识的组合默认是元组。
  • 若创建只含一个元素的元组,需要在元素后面加上一个逗号,否则认定为该元素的数据类型,当作数学中的小括号来计算。
  • 同一元组中,元素的数据类型可以相同,也可以不同。
  • t = 'a','b','c'#仅用逗号隔开,无其他标识的组合默认是元组
    print(type(t))
    print(t,end='\n\n')
    
    t1 = ()#创建空元组t1
    print(type(t1))
    print(t1,end='\n\n')
    
    t2 = ('banana')#仅有一个数据
    t3 = ('banana',)#一个数据+一个逗号
    print(type(t2),type(t3),sep=',')#t2被认定为该数据的数据类型,t3被认定为元组
    print(t2,t3,sep=',')
    
    t4 = ('orange',2,['english','launch'])#不同元素类型组成的元组
    print(t4)
    

    运行结果如下:
    圆括号()创建元组

    2.使用tuple()函数

    如果不传入任何数据,则创建一个空元组;如果创建包含数据的元组,该数据必须是可迭代类型,相当于将该可迭代类型的数据转换成元组。

    t1 = tuple()#创建空元组t1
    print(t1)
    t2 = tuple(['english','launch'])#列表为可迭代类型
    print(t2)
    t3 = tuple('python')#字符串为可迭代类型
    print(t3)
    

    运行结果如下:
    tuple()函数创建元组

    二、元组元素的访问

    1.使用索引

    t1 = (('chinese',2,[1,2,3]),'math','english')
    print(t1[2])#访问索引为2的元素,正数下标从0开始
    print(t1[-2])#访问索引为-2的元素,负数下标从-1开始
    print(t1[0][2])#访问二维元组第一行第二列的元素
    

    运行结果如下:
    使用索引

    2. 使用切片

    t1 = ('t','u','p','l','e',1)
    print(t1[::])#访问整个元组的元素
    print(t1[1:5:2])#访问1-4之间,步长为2的元素
    

    运行结果如下:
    使用切片

    三、元组的修改

    元组的元素我们不可以进行修改,但是可以对元组本身进行连接、重复等操作。

    1.更改元组元素值

    (1)元组->列表->修改->元组

    t1 = ('tomato','potato','cucumber')
    print(t1)
    l1 = list(t1)#将元组转换成列表
    l1[1] = 'eggplant'#更改列表的元素值
    t1 = tuple(l1)#将列表转换成元组
    print(t1)
    

    运行结果如下:
    转换成列表来修改

    (2)重新赋值

    t1 = ('data structure','computer network')
    print(t1)
    t1 = ('computer organization','operating system')#重新赋值,t1指向新的内存地址
    print(t1)
    

    运行结果如下:
    重新赋值

    (3)更改元组中可变数据的元素值

    当元组的元素是一个可以改变的数据类型,则元组该元素的值可以修改。元组的"不变"是元组中的每个元素指向不变,即地址不变,但是该地址的内容可以改变。

    t1 = ('chinese','math',['tomato','potato'])
    print(t1,id(t1[2]))
    t1[2][1] = 'strawberry'#更改元组中列表的元素值
    print(t1,id(t1[2]))
    

    运行结果如下:
    更改元组中列表的元素值

    2.连接、重复元组

    t1 = ('A','b','c')
    t2 = (1,2,3)
    t3 = t1 + t2#连接元组,返回新元组给t3
    print(t3)
    t4 = t1 * 3#重复元组,返回新元组给t4
    print(t4)
    

    运行结果如下:
    连接、重复元组

    四、元组的删除

    元组的元素值不可以被删除,但是元组本身可以通过del语句删除。若再次输出元组,输出变量会有NameError的异常。因为这个元组已经被删除,不存在了。

    t1 = ('abc','def',123)
    print(t1)
    del t1
    print(t1)
    

    运行结果如下:
    删除元组

    五、元组的其他操作

    1.元组的一维遍历和二维遍历

    t1 = ('rhino','elephant','giraffe')
    for i in t1:#一维元组遍历,元组符合可迭代类型
        print(i)
    print()
    
    for i in t1:#二维元组遍历,一层二层均为可迭代类型
        for j in i:
            print(j,end=' ')
        print()
    

    运行结果如下:
    元组一维二维遍历

    2.判断元素是否存在

    t1 = ('rhino','elephant','giraffe')
    print('zoo' in t1)#判断是否存在
    print('giraffe' in t1)
    print('orange' not in t1)#判断是否不存在
    

    运行结果如下:
    判断元素是否存在

    3.元组的内置函数

    (1)len()、max()、min()、count()函数

    t1 = ('out','in','at','on','above','at')
    print('元组长度为',len(t1))#计算元组中元素的个数
    print('元素最大值为',max(t1))#返回元组中元素的最大值
    print('元素最小值为',min(t1))#返回元组中元素最小值
    print('"at"出现次数为',t1.count('at'))#计算某个元素在元组中出现的次数
    

    运行结果如下:
    内置函数

    (2)index()函数

    该函数查找元组中某个元素的索引。它可以有一个参数,也可以有三个参数,指定查找范围。当存在多个该元素时,返回第一个元素出现的位置。若元素不在元组中,无索引,则程序报错。
    语法格式:

    n = tuple.index(value,start,stop)
    变量 元组名		元素值,起点,终点
    

    举例:

    t1 = ('out','in','at','on','above','at')
    print('"in"的索引为',t1.index('in'))#无指定范围,返回第一次出现的下标
    print('"at"在1-5内的索引为',t1.index('at',1,6))#指定范围为1-5,左闭右开的区间。
    print('"over"的索引为',t1.index('over'))#元素不在元组中,报错
    

    运行结果如下:
    index()函数

    六、元组和列表的区别

    查看上一篇文章关于Python中列表的详细使用,我们可以很清楚地知道:

  • 列表是可变的,可以改变元素且更改长度(元素个数)。元组是不可变的,一旦创建,元素无法改变。
  • 因为元组是不可变的,所以使用元组可以保护数据不被意外修改。
  • 如果你的数据集合需要修改,那么使用列表;如果不需要修改且希望提高效率,则使用元组。
  • 元组的性能速度比列表更有效率。1.通常情况下,一个变量不再被使用时,Python会将它的内存回收,并且返还给操作系统。但是像元组这类的静态变量,若不再被使用并且所占空间不大,Python不会回收内存,而是缓存这部分内存。因此若后期需要相同大小的元组,我们不需要再申请内存,而是直接分配之前缓存的内存。2.元组比列表少占用 16 个字节。列表是动态的,需要存储指针来指向对应的元素(占用 8 个字节);元素是可变的,需要额外存储已经分配的长度大小(占用 8 个字节)。元组长度大小固定,且存储元素不可变,所以存储空间也是固定的。
  • 元组可以在映射(和集合的成员)中当做“键”使用,而列表不行。
  • 作者:忙_

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python中元组(tuple)的详细使用

    发表回复