当前位置: 首页 > article >正文

Python元组详解

    在上一篇笔记中介绍了列表。

    公众号端:

列表icon-default.png?t=O83Ahttps://mp.weixin.qq.com/s?__biz=MzkwMjc0MTE3Mw==&mid=2247483924&idx=1&sn=f8b36af8953e8fa9c26ebbf6081edd48&chksm=c0a1afcef7d626d8bd7feedae04c8717d90f9a94266a4e6c10068d6cfaebc73ca988b39147cf#rd    CSDN端:

列表icon-default.png?t=O83Ahttps://blog.csdn.net/m0_61009360/article/details/141606941    而篇笔记将介绍与列表很像但又不同的数据类型:元组。接下来本文将详细讲解Python元组的概念和特性,以及常见的操作方法。

    欢迎各位关注我的公众号【多棱领域】,为各位分享有趣的知识,共同学习!

一.什么是元组?

    元组(Tuple)是 Python 中的一种数据结构,可用于存储多个值的有序集合。与列表类似(List),元组中的元素可以是任意类型的数据,但与列表不同的是,元组是不可变的。一旦创建了元组,就不能修改其内容。这种不可变性使得元组在某些场景下比列表更具优势,比如在需要保证数据完整性的情况下使用元组更具安全性。

二.创建元组

    在 Python 中,元组使用圆括号 () 创建。可以在括号内用逗号分隔多个元素来创建一个元组。

1.空元组

empty_tuple = ()

2.单个元素的元组

    创建一个包含单个元素的元组时,需要在元素后面加一个逗号,否则 Python会将其识别为普通的变量。

value = (42)
single_element_tuple = (42,)
print(type(value))
print(type(single_element_tuple))

    输出:

<class 'int'>

<class 'tuple'>

    可见,如果单个元素后未加逗号,会视为变量,上述例子为整数类型。

3.包含多个元素的元组

multi_element_tuple = (1, 2, 3, "Python", True)

    上述元组中包含不同数据类型。

4.不使用括号的元组

    Python 允许省略括号直接创建元组,只需用逗号分隔元素即可。这称为“序列解包”或“隐式元组”。

implicit_tuple = 1, 2, 3
print(type(implicit_tuple))

    输出:

<class 'tuple'>

. 操作方法

    由于元组是不可变的,因此它不支持像列表那样的修改操作(如 append、remove 等)。如果对元组中的元素进行修改,则会报错:

test_tuple = (10, 20, 30, 40)
test_tuple[0] = 100

    报错:

TypeError                         Traceback (most recent call last)

Cell In[9], line 2

1 test_tuple = (10, 20, 30, 40)

----> 2 test_tuple[0] = 100

TypeError: 'tuple' object does not support item assignment

    但是,元组仍然可以进行一些常见的操作。

1.访问元素

    使用索引来访问元组中的元素,与列表的操作类似。索引从 0 开始,也可以通过负数索引从末尾开始访问元素。

my_tuple = (1, 2, 'hello', (3, 4))
print(my_tuple[0]) #输出:1
print(my_tuple[-1]) #输出:(3, 4)

2.切片

    可以使用切片操作符 : 访问元组中的一部分。

my_tuple = (10, 20, 30, 40)
print(my_tuple[1:3]) #输出 (20, 30)

3.连接

    可以使用“+”运算符将两个或多个元组连接起来生成一个新的元组。

tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
result_tuple = tuple1 + tuple2
print(result_tuple) # 输出 (1, 2, 3, 4, 5, 6)

4.重复

    可以使用“*”运算符重复元组中的元素生成一个新的元组。

my_tuple = (1, 2, 3)
repeated_tuple = my_tuple * 3
print(repeated_tuple)# 输出 (1, 2, 3, 1, 2, 3, 1, 2, 3)

5.成员检查

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

my_tuple = (1, 2, 3, 4)
print(3 in my_tuple) #输出 True

6.解包(Unpacking)

    元组的解包允许将元组中的元素直接赋值给多个变量。

my_tuple = (1, 2, 3)
a, b, c = my_tuple
print(a) # 输出 1
print(b) # 输出 2
print(c) # 输出 3

7.内置函数

    Python 提供了一些内置函数用于操作元组,如 len()、max()、min()、sum() 等。

my_tuple = (1, 2, 3, 4, 5)
print(len(my_tuple)) #输出 5
print(max(my_tuple)) #输出 5
print(min(my_tuple)) #输出 1
print(sum(my_tuple)) #输出 15

    还有count() 方法可以用来统计某个元素在元组中出现的次数,index() 方法可以返回某个元素在元组中首次出现的索引。

my_tuple = (1, 2, 2, 3, 4, 2)
print(my_tuple.count(2))# 输出:3
print(my_tuple.index(3))# 输出:3

四. 应用场景

    元组在 Python 中具有广泛的应用,特别是在以下场景中:

1.不变数据的存储

    当有一组数据需要保证不被修改时,可以使用元组。例如,数据库查询的结果通常是以元组的形式返回的,因为这些结果通常不需要修改。

2.作为字典的键

    元组可以作为字典的键,而列表不可以。因为元组是不可变的,因此可以保证键的稳定性。

my_dict = {(1, 2): "value1", (3, 4): "value2"}
print(my_dict[(1, 2)])# 输出 "value1"

3.函数返回多个值

    函数可以通过返回元组来一次返回多个值。

def get_min_max(numbers):
  return min(numbers), max(numbers)
  
min_val, max_val = get_min_max([1, 2, 3, 4, 5])
print(min_val) # 输出 1
print(max_val) # 输出 5

4.结构化数据

    元组常用于表示结构化的数据,例如坐标 (x, y)、数据库记录等。

五.元组的优缺点

  • 优点

    • 不可变性:确保数据的完整性,避免意外修改。

    • 性能:由于元组不可变,它的操作通常比列表更快。

    • 作为键:可以作为字典的键,这是列表无法做到的。

  • 缺点:

    • 不可变性:无法修改元组中的元素,灵活性较差。

    • 方法有限:元组的方法较少,操作不如列表丰富。

    元组是 Python 中的一种重要数据结构,具有不可变性和高效性,适用于存储不需要修改的数据。通过了解元组的概念、创建方式、操作方法以及应用场景,有助于在编写 Python 程序时更加高效地处理数据。

    如果本文对您有所帮助,欢迎关注、点赞、转发,共同学习!


http://www.kler.cn/a/308947.html

相关文章:

  • 设计模式之工厂模式,但是宝可梦
  • JavaScript 观察者设计模式
  • 测试工程师简历「精选篇」
  • 传奇996_21——龙岭事件
  • SpringBoot参数注解
  • 每日一练:二分查找-搜索插入位置
  • Linux:RPM软件包管理以及yum软件包仓库
  • 工业园生活污水处理设备产地货源
  • 提问即创作:用Prompt提示词引领AI灵感爆发
  • 云原生(Cloud Native)
  • PHP安全
  • JSON 数据 Excel 行转列
  • Gradio导入AIGC大模型创建web端智能体聊天机器人,python(2)
  • Matlab simulink建模与仿真 第十三章(信号通路库)
  • TinyML-On-The-Fly: 实时、低功耗、低成本的微控制器嵌入式设备内计算机视觉技术用于无人机图像分类
  • AtCoder ABC370 A-D题解
  • 传知代码-KAN卷积:医学图像分割新前沿
  • 使用Pydantic模型和LangChain构建高效查询过滤器
  • 为什么在 JSON 序列化中不使用 transient
  • 复变函数论重大错误:将无穷多各异平面误为同一面
  • bev pool 原理及代码讲解
  • 通信工程学习:什么是AN-SMF接入网系统管理功能
  • jacoco生成单元测试覆盖率报告
  • 使用vant UI实现时间段选择
  • Linux系统终端中文件权限的10位字符是什么意思
  • 工厂模式 vs 简单工厂:解耦与扩展性的比较