美文网首页
数据类型 -- Tuple(元组)

数据类型 -- Tuple(元组)

作者: __深蓝__ | 来源:发表于2019-01-03 16:04 被阅读0次

    元组(tuple)与列表类似,也是一种序列数据类型。
    元组是不可变类型,其元素不能修改。
    元组中的元素是有序可重复的
    元组中元素类型可以不相同。
    元组写在小括号 ( ) 里,元素之间用逗号 , 隔开。

    创建元组
    >>> tup = ('Google', 'Neuedu', 2019, True)
    >>> tup
    ('Google', 'Neuedu', 2019, True)
    >>> type(tup)
    <class 'tuple'>
    
    • 创建空元组
    >>> tup1 = ()
    >>> tup1
    ()
    
    • 创建只有一个元素的元组时,需要在元素后面添加逗号,否则括号会被当作运算符使用
    >>> tup1 = (50)
    >>> type(tup1)     # 不加逗号,类型为整型
    <class 'int'>
     
    >>> tup1 = (50,)
    >>> type(tup1)     # 加上逗号,类型为元组
    <class 'tuple'>
    
    使用元组
    • 与列表类似,元组可以使用下标索引来访问元组中的值
      元组变量 [ 索引值 ]
    >>> tup1 = ('Google', 'Neuedu', 1997, 2000)
    >>> tup1[1])
    'Neuedu'
    
    • 元组同样可以被截取、连接、重复,运算后会生成新的元组
      元组变量 [ 头下标:尾下标 ]
    tuple = ( 'abcd', 786 , 2.23, 'neuedu', 70.2  )
    tinytuple = (123, 'neuedu')
     
    print (tuple)             # 输出完整元组
    print (tuple[0])          # 输出元组的第1个元素
    print (tuple[1:3])        # 输出从第2个到第3个元素
    print (tuple[2:])         # 输出从第3个元素开始的所有元素
    print (tinytuple * 2)     # 输出两次元组
    print (tuple + tinytuple) # 连接元组
    
    ('abcd', 786, 2.23, 'neuedu', 70.2)
    abcd
    (786, 2.23)
    (2.23, 'neuedu', 70.2)
    (123, 'neuedu', 123, 'neuedu')
    ('abcd', 786, 2.23, 'neuedu', 70.2, 123, 'neuedu')
    
    修改元组
    • 元组中的元素值是不允许修改的。
    >>> tup = (1, 2, 3, 4, 5, 6)
    >>> tup[0] = 11  # 修改元组元素的操作是非法的
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'tuple' object does not support item assignment
    
    • 虽然元素值是不允许修改的,但我们可以对元组进行连接组合
    tup1 = (12, 34.56);
    tup2 = ('abc', 'xyz')
    tup3 = tup1 + tup2;  # 创建一个新的元组
    print (tup3)
    (12, 34.56, 'abc', 'xyz')
    
    • 元组中可以包含可变的对象,比如列表,但通常不这样做
    >>> tup = ([1,2,3,4])
    >>> type(tup)
    <class 'list'>
    
    >>> tup = ([1,2,3,4],)
    >>> type(tup)
    <class 'tuple'>
    
    >>> tup[0]
    [1, 2, 3, 4]
    
    >>> tup[0][1]
    2
    
    >>> tup[0] = [11,22,33]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'tuple' object does not support item assignment
    
    >>> tup[0][1] = 222
    >>> tup[0][1]
    222
    
    • 思考下列代码中,元组的内容为什么可以改变
    >>> t = ('a', 'b', ['A', 'B'])
    >>> t[2][0] = 'X'
    >>> t[2][1] = 'Y'
    >>> t
    ('a', 'b', ['X', 'Y'])
    
    • 原因:
      定义的时候tuple包含的3个元素:


    当我们把list的元素'A''B'修改为'X''Y'后,tuple变为:

    • 表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list
    • tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

    理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。

    删除元组
    • 元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组
    >>> tup = ('Google', 'Neuedu', 1997, 2000)
    >>> del tup
    >>> tup
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'tup' is not defined
    
    元组运算符
    表达式 结果 描述
    len((1, 2, 3)) 3 计算元素个数
    (1, 2, 3) + (4, 5, 6) (1, 2, 3, 4, 5, 6) 连接
    ('Hi!',) * 4 ('Hi!', 'Hi!', 'Hi!', 'Hi!') 复制
    3 in (1, 2, 3) True 元素是否存在
    for x in (1, 2, 3): print (x,) 1 2 3 迭代
    元组函数
    函数 作用
    len(tuple) 获得元组元素个数
    max(tuple) 返回元组元素最大值
    min(tuple) 返回元组元素最小值
    tuple(seq) 将列表转换为元组
    >>> tuple1 = ('Google', 'Neuedu', 'Taobao')
    >>> len(tuple1)
    3
    
    >>> tuple2 = ('5', '4', '8')
    >>> max(tuple2)
    '8'
    
    >>> tuple2 = ('5', '4', '8')
    >>> min(tuple2)
    '4'
    
    >>> list1= ['Google', 'Taobao', 'Neuedu', 'Baidu']
    >>> tuple1=tuple(list1)
    >>> tuple1
    ('Google', 'Taobao', 'Neuedu', 'Baidu')
    




    - end -

    相关文章

      网友评论

          本文标题:数据类型 -- Tuple(元组)

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