• 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一致,不同点在于不可修改的特性

  • 相关阅读:
    matlab 最小二乘拟合平面并与XOY平面对齐
    全网最全面最深入 剖析华为“五看三定”战略神器中的“五看”(即市场洞察)(长文干货,建议收藏)
    探测工具nmap简介及使用说明
    【Go电商实战04】为什么GoFrame不支持migrate功能?我还特意去问了框架作者
    结构优化软件SolidThinking Inspire的自学攻略
    Vue3实战06-CompositionAPI+<script setup>好在哪?
    算法 矩阵最长递增路径-(递归回溯+动态规划)
    探索增强型灰狼优化算法
    Web 后端的一生之敌:分页器
    使用Net将HTML简历导出为PDF格式
  • 原文地址:https://blog.csdn.net/xiajun2356033/article/details/128067661