3.元组Tuple

作者: Stone_説 | 来源:发表于2020-12-11 01:08 被阅读0次

    目录
    0.元组介绍
    1.元组定义和初始化
    2.元组元素访问
    3.命名元组namedtuple

    0.元组介绍

    元组是不可变对象
    一个有序的元素组成的集合
    使用小括号()表示

    1.元组定义和初始化

    1.1 tuple() -> empty tuple
    >>> t = tuple()
    >>> t,type(t)
    ((), <class 'tuple'>)
    >>> t = ()
    >>> t,type(t)
    ((), <class 'tuple'>)
    >>> t = (1,2)
    >>> t,type(t)
    ((1, 2), <class 'tuple'>)
    >>> t = (1)
    >>> t,type(t)
    (1, <class 'int'>)
    >>> t = (1,)  定义单元素元组的时候,一定要加“,”逗号
    >>> t,type(t)
    ((1,), <class 'tuple'>)
    >>> t = (1,)*3 
    >>> t,type(t)
    ((1, 1, 1), <class 'tuple'>)
    >>> t = (1,2,3)*3
    >>> t,type(t)
    ((1, 2, 3, 1, 2, 3, 1, 2, 3), <class 'tuple'>)
    
    1.2 tuple(iterable) -> tuple initialized from iterable's items
    >>> t = tuple([1,2,3,4])
    >>> t
    (1, 2, 3, 4)
    >>> t,type(t)
    ((1, 2, 3, 4), <class 'tuple'>)
    >>> t = tuple("4234234")
    >>> t,type(t)
    (('4', '2', '3', '4', '2', '3', '4'), <class 'tuple'>)
    

    2.元组元素访问

    支持索引
    正索引:从左至右,从0开始,为列表中每一个元素编号
    负索引:从右至左,从-1开始
    正索引不可以超界,否则引发异常IndexError
    元组通过索引访问:tuple[index],index就是索引,使用中括号访问

    2.1 tuple[index]
    >>> t = (0,1,2,3)
    >>> t[1]
    1
    >>> t[0],t[1],t[2]
    (0, 1, 2)
    >>> t[4]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: tuple index out of range
    
    2.2 index(value,[start,[stop]])

    通过值value,从指定区间查找列表内的元素是否匹配
    匹配第一个就立即返回索引
    匹配不到,抛出异常ValueError

    >>> t = (0,1,2,3,4,5,6,7,8)
    >>> t.index(1,0,2)
    1
    >>> t.index(3,3,4)
    3
    >>> t.index(1,-8,-1)
    1
    >>> t.index(1,0,1)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: tuple.index(x): x not in tuple
    
    2.3 count(value)

    返回列表中匹配value的次数

    >>> t = (1,2,2,3,3,3,4,4,4,4,54)
    >>> t.count(0)
    0
    >>> t.count(2)
    2
    
    2.4 len(tuple)

    返回元素的个数

    >>> t
    (1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 54)
    >>> len(t)
    11
    

    NOTE:元组是只读的,所以增、改、删方法都没有

    3.命名元组namedtuple

    namedtuple是tuple的一个子类:
    1.namedtuple中的属性不可修改
    2.访问方式类似于类的访问属性,通过‘.’点进行访问
    3.可类比字典进行学习,但是和字典的k-v存储,访问有本质不同

    >>> from collections import namedtuple   #namedtuple模块导入
    >>> Point = namedtuple('_Point',['x','y'])
    >>> p1 = Point(1,2)
    >>> p1.x
    1
    >>> p1.x,p1.y
    (1, 2)
    >>> type(Point),type(p1)
    (<class 'type'>, <class '__main__._Point'>)
    >>> Point.__bases__   #namedtuple为tuple的子类
    (<class 'tuple'>,)
    >>> Point.mro()
    [<class '__main__._Point'>, <class 'tuple'>, <class 'object'>]
    

    相关文章

      网友评论

        本文标题:3.元组Tuple

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