最新公告
  • 欢迎您光临码农资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!加入我们
  • Python3的tuple类型

    在我们现实世界中,存在一些不变的数据,比如身份证号,学号等等,
    在程序里我们可以用 list 来存储一个班级里面所有学生的学号,
    但 list 本身可以修改成员值,有可能在我们程序中不小心修改了 list
    成员值导致业务逻辑错误,但在语法上并不存在问题,给程序员排查问题带来困难,
    所以用 list 来存储学号并不能很好的描述现实世界,Python 提供了 tuple(元组)
    数据类型来更好的描述这种现实世界的问题。

    tuple 与 list 类似,也是一种有序的集合,不同之处在于 tuple 中的成员是不可改变的(不能添加新成员,不能删除已有的成员,不能修改里面的成员值)。

    tuple 定义

    元组使用小括号,列表使用方括号,元组创建很简单,只需要在括号中添加成员,
    并使用逗号隔开即可。

    students_id = (1001, 1002, 1003)
    print(students_id)

    如果要定义一个空的 tuple,可以写成 ()。
    如果要定义只有 1 个成员的 tuple,不能写成 (x) ,要写成 (x,),因为 ()
    不但可以定义 tuple 类型,也可以作为运算符,比如 (1) 可以认为是对整数 1 做
    () 运算,因为 () 的运算符优先级最高,Python 解释器会把 (1) 看作为对 1 做 () 运算。

    tupleone = ()    # 空的 tuple
    print(tupleone)
    
    tupletwo = (1,)  # 一个成员的 tuple
    print(tupletwo)
    
    tupletwo = (1)   # int 类型的 1
    print(tupletwo)

    tuple 里面的成员不可修改,所以它没有 append,insert
    等可以修改集合成员的函数,其它获取成员的函数和 list 相似,因为 tuple
    不可变,所以代码更安全。如果可以,能用 tuple 代替 list 就尽量用 tuple。

    深度剖析 tuple 内存模型

    tuple 不可改变 ,也就是说 tuple 在刚开始定义的时候,
    里面的成员就确定了,我们不能修改,添加,删除 tuple 成员,
    但是如果 tuple 里面某个成员本身是可以改变的类型(比如 list),
    我们可以改变这个变量成员本身内的值,注意:我们并没有改变 tuple 的成员,我们修改的是 tuple 成员中的成员。

    mytuple = ("Hello", 250, [1, 2, 3])
    mytuple[2][0] = "Python"   # 可以
    print(mytuple)

    我们分析以上代码每一步在内存中是如何表示的,对于第一行代码 mytuple = ("Hello", 250, [1, 2, 3]) 的内存模型。

    对于第二行代码 mytuple[2][0] = "Python" 的内存模型。

    通过上面对那两句代码的内存模型的图解析,我们可以清晰的看到无论是原来的
    tuple (“Hello”, 250, [1, 2, 3]) 还是后面的 tuple (“Hello”, 250, [“Python”, 2, 3]),对于 tuple
    本身的成员来说并没有变化,还是那些地址值,只是 tuple 的第二个成员 [1, 2, 3] 里面的成员发生了变化,
    所以并没有违背 tuple 的规则(tuple 成员不可改变)。

    tuple 里面的成员是用逗号隔开的,每个成员可以是任何数据类型,无论该成员多么复杂,对
    tuple 来说只是一个成员。

    mytuple = ("Hello", 250, [1, 2, 3])
    print(len(mytuple))  # 3

    本节重要知识点

    tuple 里面有一个成员的定义方法。

    弄明白 tuple 的内存模型。

    想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
    本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
    如有侵权请发送邮件至1943759704@qq.com删除

    码农资源网 » Python3的tuple类型
    • 7会员总数(位)
    • 25846资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 293稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情