• [PY3]——内置数据结构(2)——元组及其常用操作


    定义和初始化

    #tuple()          使用工厂函数tuple定义一个空元组
    
    #()               使用圆括号定义一个空元组
    
    #(1,2,3)          使用圆括号定义有初始值的元组
    
    #tuple(可迭代对象)  把可迭代对象转换为一个元组
    
    In [1]: tup=tuple();print(tup)
    ()
    
    In [2]: tup=();print(tup)
    ()
    
    In [3]: tup=(1,2,3);print(tup)
    (1, 2, 3)
    
    In [5]: tup=tuple(range(0,2));print(tup)
    (0, 1)
    
    #要定义一个只有1个元素的tuple,如果这么定义:
    In [30]: tup=(1)
    In [31]: type(tup)
    Out[31]: int  
    #定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。 #所以只有1个元素的tuple定义时必须加一个逗号,,来消除歧义 In [32]: tup=(1,) In [33]: type(tup) Out[33]: tuple In [34]: print(tup) (1,) # Python在显示只有1个元素的tuple时,也会加一个逗号,,以免误解成数学计算意义上的括号

    元组是不可修改的

    访问元组元素

    1. 通过索引访问元素

    In [7]: t=tuple(range(0,7));print(t)
    (0, 1, 2, 3, 4, 5, 6)
    
    In [8]: t[1]
    Out[8]: 1
    
    In [9]: t[-1]
    Out[9]: 6

    2. index()

    In [21]: help(t.index)
    index(...) method of builtins.tuple instance
        T.index(value, [start, [stop]]) -> integer -- return first index of value.
        Raises ValueError if the value is not present.
    
    In [16]: print(t)
    (1, 2, 3, 2, 6)
    
    In [17]: t.index(2)
    Out[17]: 1
    
    In [20]: t.index(2,1,3)
    Out[20]: 1

    3. count()

    In [21]: help(t.count)
    count(...) method of builtins.tuple instance
        T.count(value) -> integer -- return number of occurrences of value
    
    In [22]: t.count(2)
    Out[22]: 2

    命名元组 nametuple

    # namedtuple('名称', [属性list]):
    # namedtuple是一个函数,它用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素。
    # 这样一来,我们用namedtuple可以很方便地定义一种数据类型,它具备tuple的不变性,又可以根据属性来引用,使用十分方便。
    
    # 例如我们可以使用namedtuple来表示坐标:
    In [35]: from collections import namedtuple
    
    In [36]: Circle=namedtuple('Circle',['x','y','z'])
    
    In [37]: C=Circle(2,2,3)
    
    In [38]: print(C.x);print(C.z)
    2
    3
    
    # 创建的Circle对象是tuple的一种子类
    In [39]: isinstance(C,Circle)
    Out[39]: True
    
    In [40]: isinstance(C,tuple)
    Out[40]: True
    
    # 所以C完全可以当做元组去使用
    In [46]: C.index(2)
    Out[46]: 0
    
    In [47]: print(C[1])
    2
    
    In [48]: C.count(2)
    Out[48]: 2
    #列表和元组的异同?
    #<相同点>
       列表和元组都是容器,可以包含任意类型的元素(甚至是包含一个序列)
       列表和元素也都包含元素的顺序
    #<差别>
        列表是可变的,元组是不可变的
        所以通常,在你有一些不确定长度的相同类型队列时使用列表
        在已知元素数量的情况下用元组










  • 相关阅读:
    联考20200604 T2 宝石
    联考20200604 T1 旅游
    联考20200603 T2 排列
    [HAOI2017]八纵八横
    联考20200603 T1 解码
    [POI2011]KON-Conspiracy
    CF917D Stranger Trees
    CF1278F Cards
    CF809E Surprise me!
    NOI2016 循环之美
  • 原文地址:https://www.cnblogs.com/snsdzjlz320/p/6565348.html
Copyright © 2020-2023  润新知