• Python元组(Tuple)深度解析!


    目录

    1. 什么是元组?

    2. 创建元组

    3.访问元组

    4.元组的运算

    5.修改元组不可行

    6.元组的应用场景


    前面的博客里,我们详细介绍了列表(List)这一种数据类型,现在我们来讲讲与列表相似的一种数据类型,元组(Tuple)。下表是元组与列表的对比:

    特征

    元组

    列表

    可变性

    不可变

    可变

    性能

    操作上更快

    一些操作上比较慢

    语法

    使用圆括号 ()

    使用方括号 []

    在Python中的元组(Tuple)是一种不可变序列,它可以容纳任意数量的元素,这点和列表(List)是一样的。然而,元组与列表之间有着关键的区别,这些区别也使得元组在某些情况下更为适用。本文将深入探讨Python元组的特性、用法以及与其他数据类型的比较。

    1. 什么是元组?

    元组由一系列元素组成,并用小括号 ()括起来。元组中的元素可以是任何类型,包括数字、字符串、列表等等。如下图:

    元组的特点:

    • 元组是不可变的(Immutable),一旦创建了元组,就不能再修改其中的元素。意味着与列表相比,元组更加稳定和安全。

    • 元组是有序的,这意味着元组中的元素会按照一定的顺序排列。

    • 元组可以重复,这意味着元组中的元素可以出现多次。

    2. 创建元组

    创建元组只需使用圆括号 () 并在其中放置元素,元素之间用逗号 , 分隔。例如:

    my_tuple = (1, 2, 3, 4, 5)

    创建空元组:

    empty_tuple = ()

    创建只包含一个元素的元组:

    single_element_tuple = (42,)

    Notes:这里在元素后面加上逗号,是为了以区分它与普通的表达式不同,不加的话,这里就是括号运算。

    3.访问元组

    在Python中,元组(tuple)可以通过索引和切片来访问其中的元素。索引从 0 开始,一直到元组的长度减 1。下面我们定义一个元组,内容包含多种数据类型,为了帮助大家理解,示例代码如下:

    1. # 定义元组
    2. my_tuple = (1, "apple", True, 3.14, [5, 6, 7], {"name": "TiYong", "age": 25})
    3. # 使用索引访问单个元素
    4. first_element = my_tuple[0] # 第一个元素
    5. print("第一个元素:", first_element)
    6. second_element = my_tuple[1] # 第二个元素
    7. print("第二个元素:", second_element)
    8. last_element = my_tuple[-1] # 最后一个元素
    9. print("最后一个元素:", last_element)
    10. print("-" * 30) # 分隔线
    11. # 使用切片访问子序列
    12. from_second_to_last = my_tuple[1:] # 从第二个到最后一个元素
    13. print("从第二个到最后一个元素:", from_second_to_last)
    14. first_three_elements = my_tuple[:3] # 前三个元素
    15. print("前三个元素:", first_three_elements)
    16. second_to_second_last = my_tuple[1:-1] # 第二个到倒数第二个元素
    17. print("第二个到倒数第二个元素:", second_to_second_last)
    18. print("-" * 30) # 分隔线
    19. # 访问嵌套元素
    20. first_value_in_list = my_tuple[4][0] # 访问列表元素中的第一个值
    21. print("列表元素中的第一个值:", first_value_in_list)
    22. value_in_dict = my_tuple[5]["name"] # 访问字典元素中的值
    23. print("字典元素中的值:", value_in_dict)
    24. print("-" * 30) # 分隔线
    25. # 使用负数索引
    26. second_last_element = my_tuple[-2] # 倒数第二个元素
    27. print("倒数第二个元素:", second_last_element)
    28. print("-" * 30) # 分隔线
    29. # 多层混合访问
    30. age_value = my_tuple[5]["age"] # 获取字典中年龄的值
    31. print("字典中年龄的值:", age_value)

    具体输出如下:

    1. 第一个元素: 1
    2. 第二个元素: apple
    3. 最后一个元素: {'name': 'TiYong', 'age': 25}
    4. ------------------------------
    5. 从第二个到最后一个元素: ('apple', True, 3.14, [5, 6, 7], {'name': 'TiYong', 'age': 25})
    6. 前三个元素: (1, 'apple', True)
    7. 第二个到倒数第二个元素: ('apple', True, 3.14, [5, 6, 7])
    8. ------------------------------
    9. 列表元素中的第一个值: 5
    10. 字典元素中的值: TiYong
    11. ------------------------------
    12. 倒数第二个元素: [5, 6, 7]
    13. ------------------------------
    14. 字典中年龄的值: 25

    4.元组的运算

    在Python中,元组(tuple)是不可变的序列,它支持一些基本的运算,包括拼接、重复和成员检测等操作。

    • 拼接元组:

    元组可以通过加号 + 运算符进行拼接,创建一个新的元组。

    1. tuple1 = (1, 2, 3)
    2. tuple2 = ("apple", "banana", "cherry")
    3. result_tuple = tuple1 + tuple2
    4. print(result_tuple) #输出:(1, 2, 3, 'apple', 'banana', 'cherry')
    • 元组重复:

    使用乘号 * 来重复一个元组的内容。

    1. tuple3 = ("a", "b", "c")
    2. repeated_tuple = tuple3 * 3
    3. print(repeated_tuple) #输出:('a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c')
    • 成员检测:

    使用 in 关键字来检查元素是否存在于元组中。

    1. my_tuple = (1, 2, 3, 4, 5)
    2. print(3 in my_tuple) # True
    3. print(6 in my_tuple) # False
    • 元组长度:

    使用 len() 函数获取元组的长度。

    1. my_tuple = (1, 2, 3, 4, 5)
    2. print(len(my_tuple)) # 5
    • 元组解包(Unpacking):

    将元组中的元素解包到多个变量中。

    1. my_tuple = (10, 20, 30)
    2. a, b, c = my_tuple
    3. print(a) # 10
    4. print(b) # 20
    5. print(c) # 30
    • 比较元组:

    比较两个元组是否相等。

    1. tuple1 = (1, 2, 3)
    2. tuple2 = (1, 2, 3)
    3. tuple3 = (3, 2, 1)
    4. print(tuple1 == tuple2) # True
    5. print(tuple1 == tuple3) # False

    5.修改元组不可行

    前面我们一直强调:元组(tuple)是一种不可变的序列类型。这意味着一旦创建了元组,就不能对其进行修改。下面我们通过具体的代码,详细讲解,关于元组不可变性的几个重要知识点:

    • 元组创建后不可修改:元组一旦创建了,其中的元素就不能被修改、添加或删除。
    1. my_tuple = (1, 2, 3)
    2. my_tuple[0] = 10 # 这行代码会导致错误,因为元组不可变
    3. ######################
    4. Traceback (most recent call last):
    5. File "Untitled-1.py", line 2, in
    6. my_tuple[0] = 10 # 这行代码会导致错误,因为元组不可变
    7. TypeError: 'tuple' object does not support item assignment
    • 添加和删除元素是不允许的:与列表(list)不同,元组不支持 append()insert()remove() 等方法来添加或删除元素。
    1. my_tuple = (1, 2, 3)
    2. my_tuple.append(4) # 会导致 AttributeError 错误
    3. del my_tuple[1] # 会导致 TypeError 错误
    4. ######################
    5. #报错如下:
    6. Traceback (most recent call last):
    7. File "Untitled-1.py", line 2, in
    8. my_tuple.append(4) # 会导致 AttributeError 错误
    9. AttributeError: 'tuple' object has no attribute 'append'
    • 元组拼接和重复会生成新元组:虽然不能直接修改现有元组,但可以通过拼接和重复操作生成新的元组。
    1. tuple1 = (1, 2, 3)
    2. tuple2 = ("a", "b", "c")
    3. result_tuple = tuple1 + tuple2 # 创建新的元组
    4. print(result_tuple) # (1, 2, 3, 'a', 'b', 'c')
    5. repeated_tuple = tuple1 * 2 # 创建新的元组
    6. print(repeated_tuple) # (1, 2, 3, 1, 2, 3)
    • 修改元组需要重新赋值:虽然不能直接修改元组,但可以通过重新赋值来实现对元组的间接修改。
    1. my_tuple = (1, 2, 3)
    2. my_tuple = my_tuple + (4,) # 创建新的元组并赋值给原变量
    3. print(my_tuple) # (1, 2, 3, 4)
    • 元组作为字典键:由于元组不可变性,可以作为字典的键,而列表等可变类型则不能。
    1. my_dict = {(1, 2): "apple", (3, 4): "banana"}
    2. print(my_dict[(1, 2)]) # apple

    6.元组的应用场景

    在Python中,元组有很多应用场景,下面我们简单展示一些。

    a.存储一组相关的数据:

    1. # 定义一个包含学生信息的元组列表
    2. students = [
    3. ('Alice', 20, 'A'),
    4. ('Bob', 21, 'B'),
    5. ('Charlie', 19, 'A-'),
    6. ('David', 22, 'B+')
    7. ]
    8. # 打印每个学生的信息
    9. for student in students:
    10. name, age, grade = student
    11. print(f"Name: {name}, Age: {age}, Grade: {grade}")

    b.作为函数的参数或返回值:

    1. # 定义一个函数,返回两个数字的和与差组成的元组
    2. def add_subtract(a, b):
    3. return (a + b, a - b)
    4. # 调用函数并获取返回的元组
    5. result = add_subtract(10, 5)
    6. sum_result, diff_result = result
    7. print(f"Sum: {sum_result}, Difference: {diff_result}")

    c.用于集合运算:

    1. # 定义两个元组
    2. tuple1 = (1, 2, 3, 4, 5)
    3. tuple2 = (4, 5, 6, 7, 8)
    4. # 求并集
    5. union = set(tuple1) | set(tuple2)
    6. print("Union:", union)
    7. # 求交集
    8. intersection = set(tuple1) & set(tuple2)
    9. print("Intersection:", intersection)
    10. # 求差集
    11. difference = set(tuple1) - set(tuple2)
    12. print("Difference:", difference)

    元组的不可变性这一点,对于许多不可变的数据结构非常有用,那么更多的应用场景,需要大家下去探索。

    那么,关于元组(tuple)数据类型及其操作的函数讲解和示例代码,基本上讲完了。大家可以尝试着跟着代码一起学习,如果后面还有补充的,我将继续为大家分享。

    感谢您的关注,我们下一篇文章将继续学习记录python的下一个知识点。

    如果感觉阅读对您还有些作用,可以评论留言,关注我。谢谢您的阅读!

    往期学习:

    Python安装教程(版本3.8.10)windows10

    Linux系统:安装Conda(miniconda)

    Conda快速安装的解决方法(Mamba安装)

    VSCode安装教程(版本:1.87.0)Windows10

    Python基础语法:从入门到精通的必备指南

    Python的基本数据类型

    Python数据类型间的转换(隐式、显式)-CSDN博客

    Python基础知识:运算符详解-CSDN博客

    Python基础知识:数字类型及数学函数详解-CSDN博客

    Python字符串操作及方法详解!一篇就搞定!-CSDN博客

    Python列表及其操作详解,从此不再迷茫!-CSDN博客

  • 相关阅读:
    遍历的方法总结
    Vue----全局组件和局部组件
    APP测试
    数据库设计 ER图
    QQ小程序——无法正常创建项目与uniapp联动问题
    bs4比lxml更好?爬取彩票预测并通过bs4解析
    P3717 [AHOI2017初中组]cover
    Apache Hudi在信息服务行业构建流批一体的实践
    【LeetCode】【剑指offer】【最小的k个数】
    做app的测试,你大概率会用到这个命令,尤其是做monkey测试
  • 原文地址:https://blog.csdn.net/TiYong/article/details/136630412