• Python 数据容器(2) - tuple(元祖)


    为什么需要元祖

    当我们需要在程序内封装数据,又不希望封装的数据被蹿改。那么元祖就非常适合当前场景

    定义元祖

    元组定义:定义元祖使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型

     #定义元祖字面量
    (元素,元素,.....,元素)
    
    # 定义元祖变量
    变量名称 = (元素,元素,....,元素)
    
    # 定义空元祖
    变量名称 = ()
    变量名称 = tuple()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    注意:当元祖只有一个数据时,这个数据后面要添加逗号如:
    t1 = (‘hello’, )

    代码示例
    # 定义元祖
    t1 = (1, "hello", True)
    t2 = ()
    t3 = tuple()
    print(f"t1的类型:{type(t1)}, 内容是:{t1}")
    print(f"t2的类型:{type(t2)}, 内容是:{t2}")
    print(f"t3的类型:{type(t3)}, 内容是:{t3}")
    
    # 结果:t1的类型:, 内容是:(1, 'hello', True)
    # 结果:t2的类型:, 内容是:()
    # 结果:t3的类型:, 内容是:()
    
    # 定义单个元祖的元素
    t4 = ("hello", )
    print(f"t4的类型:{type(t4)}, 内容是:{t4}")
    # 结果:t4的类型:, 内容是:('hello',)
    
    # 元祖的嵌套
    t5 = ((1, 2, 4), (5, 6, 7))
    print(f"t5的类型:{type(t5)}, 内容是:{t5}")
    # 结果:t5的类型:, 内容是:((1, 2, 4), (5, 6, 7))
    
    # 下标索引取出内容
    num = t5[1][2]
    print(f"num的数量:{num}")
    # 结果:num的数量:7
    
    # 根据index(),查找特定元素的第一个匹配项
    t1 = (1, 2, 'hi', 3, 4, 'hi')
    print(t1.index('hi'))
    # 结果: 2
    
    # 统计某个数据在元祖出现的次数
    t1 = (1, 2, 'hi', 3, 4, 'hi')
    print(t1.count('hi'))
    # 结果: 2
    
    # 统计元组内的元素个数
    t1 = (1, 2, 'hi', 3, 4, 'hi')
    print(len(t1))
    # 结果: 6
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    元祖的相关操作
    在这里插入图片描述

    注意事项:元祖由于不可修改的特性,所以其操作方法非常少

    • 不可以修改元祖的内容,否则会直接报错
     t1 = (1, 2, 4)
     t1[0] = 5
    # Traceback (most recent call last):
    #   File "/Users/xiajun/PycharmProjects/pythonProject/test.py", line 3, in 
    #     t1[0] = 5
    #     ~~^^^
    # TypeError: 'tuple' object does not support item assignment
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 可以修改元组内的list内容(修改元素、增加、删除、反转等)
     t1 = (1, 2, ['one', 'two'])
     t1[2][1] = 'best'
     print(t1)
    # 结果:(1, 2, ['one', 'best'])
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 不可以替换list为其他list或者其它类型
    t1 = (1, 2, ['one', 'two'])
    t1[2] = [1, 2, 3,]
    print(t1)
    # Traceback (most recent call last):
    #   File "/Users/xiajun/PycharmProjects/pythonProject/test.py", line 17, in 
    #     t1[2] = [1, 2, 3,]
    #     ~~^^^
    # TypeError: 'tuple' object does not support item assignment
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    元祖的特点

    经过上述对元祖的学习,可以总结出列表有如下特点:

    • 可以容纳多个数据
    • 可以容纳不同类型的数据(混装)
    • 数据是有序存储的(下标索引)
    • 允许重复数据存在
    • 不可以修改(增加或删除元素等)
    • 支持for循环

    多数特性和 list一致,不同点在于不可修改的特性

  • 相关阅读:
    网络编程实战(二)
    文件流和文件描述符互相转换
    Mysql 5.7版本手写sql 实现 Mysql 8.x版本的 dense_rank() over()函数的效果
    docker 部署prometheus和grafana
    基于SSM+JSP的新闻发布管理系统
    关于中台的一点思考
    nlp入门(二) :商品信息可视化与文本分析实战
    CNCF Keith Chan:分布式云时代,云原生社区的发展与趋势
    宝塔显示100%负载100%cpu解决办法
    css_css3新特性
  • 原文地址:https://blog.csdn.net/xiajun2356033/article/details/128067661