美文网首页
Python的基本数据类型——Tuple

Python的基本数据类型——Tuple

作者: 沐码人 | 来源:发表于2018-08-13 18:25 被阅读0次
    Neven Krcmarek

    元组(Tulpe)是Python中另外的一种数据类型,和列表(List)一样也是一组有序对象的集合,大部分的属性和列表(List)一样,接下来我们来看看,Python中为什么会存在元组,以及他和列表(List)不一样的地方

    定义一个元组

    a=(1,2,3,4)
    
    print(type(a))
    # 输出 tuple
    
    b=(1,True,0,'Apple',[1,2,[1,3]])
    
    print(type(b))
    # 输出 tuple
    
    

    元组和列表的相同点

    • 和列表一样元素也可以通过索引和切片的方式访问元素
    a=(1,True,0,'Apple',[1,2,[1,3]])
    
    # 通过索引访问
    print(a[2])
    # 输出 0
    
    print(a[-1])
    # 输出 [1,2,[1,3]]
    
    # 通过切片访问
    print(a[0:2])
    # 输出 (1,2)
    
    print(a[:-1])
    # 输出 (1, True, 0, 'Apple')
    
    • 通过 +、* 添加元素
    a=(1,2,3)
    a+=(4,5,6)
    print(a)
    # 输出 (1,2,3,4,5,6)
    
    b=a*3
    print(b)
    # 输出 (1, 2, 3, 1, 2, 3, 1, 2, 3)
    
    
    • 同样适用于元组的一些内置函数
    a=(1,2,3)
    
    # 判断一个元素是否存在于元组中
    print(1 in a)
    # 输出 True
    
    # 获取元组的长度
    print(len(a))
    # 输出 3
    
    # 获取元组中最大元素
    print(max(a))
    # 输出 3
    
    # 获取元组中最小元素
    print(min(a))
    # 输出 1
    
    # 获取元组中元素的下标
    print(a.index(3))
    # 输出 2
    
    # 获取元组中元素的个数
    print(a.count(2))
    # 输出 1
    
    # 计算元组中元素的和
    print(sum(a))
    

    元组和列表有什么区别

    看到元组的定义和访问元素的方式,你可能会很困惑,别人家的语言都没这个数据类型,Python这不是找事吗?为什么要设计一个和列表一样属性的数据类型,老子是真学不动啦!先别急,你只需记住以下几点即可。

    • 列表定义的时候使用[ ],元组使用( )
    • 列表可以改变的,但是元组不可变,也就是元组定义好以后我们不能修改里面的元素
    • 能使用元组的尽量使用元组

    元组不能改变是什么意思

    我们通过简单的代码演示一下数组的不可变性

    a=(1,2,3,4,5)
    a[0]=10
    
    # 这个时候会抛出异常
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'tuple' object does not support item assignment
    

    因为元组中的元素不能修改,所以元素的没有append( )、insert( )等修改方法

    删除元组

    之前分享列表的时候提到删除列表的方法有很多,可以使用del、clear( )、remove( )、pop( ), 但是元组因为不能修改所以只能使用del清空元组,下面通过代码演示一下

    a=(1,2,3,4)
    
    # 删除元组
    del a
    

    元组的一些坑

    • 定义一个元素的元组
    # 定义一个元素的列表
    print(type([1]))
    # 输出 list
    
    # 定义一个元素的元组
    print(type((1)))
    # 输出 int
    
    # 因为( ) 在python中是数学运算符号
    # 正确的做法是在元素后面添加一个逗号
    print(type((1,)))
    # 输出tuple
    
    • 元组中的元素‘可变’

    前面一直说元组中的元素不能修改,下面我们来演示一下元组中的元素可以修改

    a=(1,2,[3,4,5])
    
    a[0]=10
    # 会报错
    
    a[-1][-1]=10
    print(a)
    # 输出 (1,2,[3,4,10])
    

    上面的案例没有报错,而且还修改成功了,你可能现在很困惑、元素到底能不能修改。

    从表面上看,元组中的元素确实被修改了,但其实修改的不是元组中的元素,而是[3,4,5]这个列表中的元素。就好比元组中有三个盒子,分别是1、2、[3,4,5],这个三个盒子的位置不能变,但是这个盒子里装的东西可以变,你可以把这个盒子里的东西拿出来,你也可以往这个盒子装一头大象,但是不论你往盒子装什么,这个盒子还是之前的盒子,也就是元组中元素的指向没有发生变化。

    总结:本篇文章主要分享了怎么定义一个元组、元组与列表的相同和不同之处,重点掌握元组的不可变性

    相关文章

      网友评论

          本文标题:Python的基本数据类型——Tuple

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