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

python---元组(Tuple)

文章目录

  • 基本特性
  • 创建元组
  • 访问元组元素
  • 元组操作
  • 元组解包(Unpacking)
    • 基本解包
    • 使用*收集剩余元素
  • 元组方法
  • 元组与列表的比较
  • 使用场景
  • 元组嵌套

元组是Python中的一种内置数据类型,它是一个不可变(immutable)、有序的序列。元组用圆括号()表示,元素之间用逗号分隔。

基本特性

1、不可变性:一旦创建,元组的内容不能修改(不能添加、删除或更改元素)

2、有序性:元素按照插入顺序存储,可以通过索引访问

3、可包含任意类型:可以包含数字、字符串、列表、甚至其他元组等

4、允许重复元素

创建元组

创建元组时,如果只有一个元素,后面不加逗号,则不是元组类型。例如not_a_tuple = (5)为整数型,not_a_tuple = (‘c’)为字符串型

# 空元组
empty_tuple = ()
print(f"empty_tuple is {empty_tuple}")# 包含元素的元组
numbers = (1, 2, 3, 4)
fruits = ('apple', 'banana', 'cherry')
print(f"numbers is {numbers}")
print(f"fruits is {fruits}")# 只有一个元素的元组(注意末尾的逗号)
single_element = (5,)  # 这是一个元组
print(f"single_element is {single_element}", "type of single_element is", type(single_element))
not_a_tuple = (5)      # 这不是元组,只是一个整数
print(f"not_a_tuple is {not_a_tuple}", "type of not_a_tuple is", type(not_a_tuple))# 不使用括号创建(元组打包)
colors = 'red', 'green', 'blue'
print(f"colors is {colors}")

访问元组元素

t = ('a', 'b', 'c', 'd', 'e')# 通过索引访问
print(t[0])   # 'a'
print(t[2])   # 'c'# 负索引
print(t[-1])  # 'e'(最后一个元素)# 切片
print(t[1:3]) # ('b', 'c')

元组操作

# 连接元组
tuple1 = (1, 2, 3)
tuple2 = ('a', 'b')
combined = tuple1 + tuple2  # (1, 2, 3, 'a', 'b')# 重复元组
repeated = tuple1 * 2  # (1, 2, 3, 1, 2, 3)# 成员检查
print(2 in tuple1)  # True
print('x' in tuple1) # False# 长度
print(len(tuple1))  # 3

元组解包(Unpacking)

基本解包

point = (10, 20)
x, y = point
print(x) # 10
print(y) # 20

使用*收集剩余元素

numbers = (1, 2, 3, 4, 5)
first, *middle, last = numbers
print(first)   # 1
print(middle)  # [2, 3, 4](注意变成了列表)
print(last)    # 5# 交换变量 不适用括号创建元组
a, b = 1, 2
a, b = b, a    # 交换a和b的值
print(f"a = {a}, b = {b}")

元组方法

由于元组不可变,它只有两个方法:

1、count() - 返回指定值出现的次数

2、index() - 返回指定值的第一个索引
注意:元组没有增删改查的方法。

t = (1, 2, 3, 2, 4, 2)print(t.count(2))  # 3
print(t.index(3))  # 2

元组与列表的比较

特性元组 (Tuple)列表 (List)
可变性不可变可变
语法使用()使用[]
性能更快较慢
内存使用更少较多
安全性更安全较不安全

使用场景

1、当需要确保数据不被修改时(如常量集合)

2、作为字典的键(因为元组不可变,而列表不能作为键)

3、函数返回多个值时(实际上返回的是一个元组)

4、性能敏感的场景(元组比列表更高效)

# 函数返回多个值(实际上是返回一个元组)
def get_stats(numbers):return min(numbers), max(numbers), sum(numbers)/len(numbers)# 字典中使用元组作为键
locations = {(35.6895, 139.6917): "Tokyo",(40.7128, -74.0060): "New York"
}

元组嵌套

t = (1, (2, 3), (4, (5, 6)))
print(t[1])        # 输出: (2, 3)
print(t[1][0])     # 输出: 2
print(t[2][1][0])  # 输出: 5
http://www.xdnf.cn/news/1176265.html

相关文章:

  • 嵌入式开发学习———Linux环境下数据结构学习(二)
  • M3066ANL网络变压器,常用于NEC方案机顶盒等网络设备M3066AN实现网络信号的稳定传输与电气隔离保护
  • 暑期自学嵌入式——Day06(C语言阶段)
  • 音视频学习(四十三):H264无损压缩
  • opencv学习(图像处理)
  • RLVR的一种扩展方案--RLPR论文阅读
  • window下c++共享内存,进程互斥锁。
  • 算法牢笼与思想飞地:在人工智能时代守卫灵魂的疆域
  • 【基于OpenCV的图像处理】图像预处理之图像色彩空间转换以及图像灰度化处理
  • 编程日常开发工具整理
  • 加载用户设置时遇到错误找到一个带有无效“icon“的配置文件。将该配置文件默认为无图标。确保设置“icon“时,该值是图像的有效文件路径“
  • 使用JMeter进行压力测试(以黑马点评为例、详细图解)
  • [每日随题15] 前缀和 - 拓扑排序 - 树状数组
  • SpringBoot 内嵌 Tomcat 的相关配置
  • RocketMQ核心源码解读
  • 快速梳理遗留项目
  • Maven学习
  • 服务器版本信息泄露-iis返回包暴露服务器版本信息
  • 《汇编语言:基于X86处理器》第9章 复习题和练习
  • C++:list(1)list的使用
  • 性能优化:Vue 3 `v-memo` 指令详解
  • 四、cv::Mat的介绍和使用
  • FreeRTOS学习笔记之调度机制
  • Linux C: 函数
  • 2026 拼多多秋招内推码(提前批)
  • 2025年电赛--电源题赛前押题
  • 19.动态路由协议基础
  • 1. 一份“从 0 到 1” 的 WSL(Windows Subsystem for Linux)速查手册
  • 自定义类型:结构体,联合和枚举
  • (Arxiv-2025)OVIS-U1技术报告