• Python顺序集合之 tuple


    慕课网《Python 入门》学习笔记

     

    1、tuple特性

    tuple是另一种有序的列表,中文翻译为“ 元组 ”。tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了

     >>> t = ('Adam', 'Lisa', 'Bart') 

    创建tuple和创建list唯一不同之处是用( )替代了[ ]

    现在,这个 t 就不能改变了,tuple没有 append()方法,也没有insert()和pop()方法。所以,新元素没法直接往 tuple 中添加,在 tuple删除元素 也不行。

    获取 tuple 元素的方式和 list 是一模一样的,可以正常使用 t[0],t[-1]等索引方式访问元素,但是不能赋值成别的元素

     >>> t[0] = 'Paul'
     Traceback (most recent call last):
     File "", line 1, in
     TypeError: 'tuple' object does not support item assignment

    2、创建单元素tuple

    包含 0 个元素的 tuple,也就是空tuple,直接用 ()表示:

     >>> t = ()
     >>> print t
     ()

    创建包含1个元素的 tuple 呢?来试试:

     >>> t = (1)
     >>> print t
     1

    因为()既可以表示tuple,又可以作为括号表示运算时的优先级,结果 (1) 被Python解释器计算出结果 1,导致我们得到的不是tuple,而是整数 1。

    正是因为用()定义单元素的tuple有歧义,所以 Python 规定,单元素 tuple 要多加一个逗号“,”,这样就避免了歧义:

     >>> t = (1,)
     >>> print t
     (1,)

    Python在打印单元素tuple时,也自动添加了一个“,”,为了更明确地告诉你这是一个tuple。

    3、"可变”的tuple

    tuple也是“可变”的,如:

     >>> t = ('a', 'b', ['A', 'B'])

    注意到 t 有 3 个元素:'a','b'和一个list:['A', 'B']。list作为一个整体是tuple的第3个元素。list对象可以通过 t[2] 拿到:

     >>> L = t[2]

    然后,我们把list的两个元素改一改:

     >>> L[0] = 'X'
     >>> L[1] = 'Y'

    再看看tuple的内容:

     >>> print t
     ('a', 'b', ['X', 'Y'])
     
    表面上看,tuple的元素确实变了,但其实变的不是 tuple 的元素,而是list的元素。
    tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
    理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。
  • 相关阅读:
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    C语言基础知识【作用域规则】
  • 原文地址:https://www.cnblogs.com/technologylife/p/5628585.html
Copyright © 2020-2023  润新知