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

Python学习——【4.2】数据容器:tuple元组

文章目录

  • 【4.2】数据容器:tuple元组
    • 一、元组的定义格式
    • 二、元组的特点
    • 三、元组的操作
      • (一)常见操作
      • (二)循环遍历

【4.2】数据容器:tuple元组

一、元组的定义格式

为什么需要元组

  列表是可以修改的。如果想要让传递的信息无法被篡改,列表就不合适了。

  元组和列表一样,都是可以封装多个、不同类型的元素在内。但最大的不同点在于:元组一旦定义完成,就不可修改。(可以认为元组就是“只读的list”)

  所以,当我们需要在程序内封装数据,又不希望封装的数据被篡改,那么元组就非常合适了。

定义元组

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

# 定义元组字面量
(元素, 元素, ..., 元素)

# 定义元组变量
变量名称 = (元素, 元素, ..., 元素)

# 定义空元组
变量名称 = ()  # 方式1
变量名称 = tuple()  # 方式2

  注意,元组只有一个数据时,这个数据后面要加逗号,如下所示。

# 定义3个元素的元组
t1 = (1, "Hello", True)

# 定义1个元素的元组
t2 = ("Hello", )  # 注意,必须带有逗号,否则不是元组类型

  元组也支持嵌套,如下所示。

# 定义一个嵌套元组
t1 = ( (1, 2, 3), (4, 5, 6) )
print(t1[0][0])  # 1

  不可以修改元组的内容,否则会直接报错。

# 尝试修改元组内容
t1 = (1, 2, 3)
t1[0] = 5  # 报错

  但是有这样一种特殊情况,如果元组内嵌套了一个list列表,那么是可以对元组内的这个list进行内容修改的。

# 修改元组中list列表内的内容
t1 = (1, 2, ["zhangsan", "lisi"])
t1[2][1] = "Hello"
print(t1)  # (1, 2, ['zhangsan', 'Hello'])

二、元组的特点

  元组有如下特点:

  • 可以容纳多个数据;
  • 可以容纳不同类型的数据;
  • 数据是有序存储的(下标索引);
  • 允许重复数据存在;
  • 不可以修改
  • 支持for循环。

  总之,除了“不可修改”的特点外,基本与list的特点一致。

三、元组的操作

(一)常见操作

image-20240921225339378

  就是把list操作中的修改操作去掉,查询操作搬过来。

  示例:

# 根据下标(索引)取出数据
t1 = (1, 2, 'Hello')
print(t1[2])  # Hello

# index查找方法,查找特定元素第一个匹配项的下标
t1 = (1, 2, "Hello", 3, 4, "Hello")
print(t1.index("Hello"))  # 2

# count统计方法,统计某元素在元组内出现的次数
t1 = (1, 2, "Hello", 3, 4, "Hello")
print(t1.count("Hello"))  # 2

# 统计元组内的元素个数
t1 = (1, 2, 3)
print(len(t1))  # 3

(二)循环遍历

while循环

t1 = (1, 2, "Hello", 3, 4, "Hello")

index = 0
while index < len(t1):
    print(f"元组的元素有:{t1[index]}")
    index += 1

for循环

t1 = (1, 2, "Hello", 3, 4, "Hello")

for element in t1:
    print(f"元组的元素有:{element}")

相关文章:

  • 前端web端项目运行的时候没有ip访问地址
  • Qt:NULL与nullptr的区别(手写nullptr)
  • 【Kubernetes】常见面试题汇总(二十七)
  • Mysql 视图存储过程触发器
  • Spring系统学习(一)——初识Spring框架
  • Nginx实用篇:实现负载均衡、限流与动静分离
  • JVM虚拟机基础知识
  • 线性规划------ + 案例 + Python源码求解(见文中)
  • ArrayList的扩容机制
  • Linux帮助命令
  • 地面站通过SSH连接无人机
  • Android 开发入门教程-入门基础
  • 【vue element-ui】关于删除按钮的提示框,可一键复制
  • Unity之FPS
  • 日志收集工具 Fluentd vs Fluent Bit 的区别
  • docker面经
  • 算法-深度拷贝链表(138)
  • 目标检测中的非极大值抑制(NMS):步骤与Python实现
  • 乐观锁、悲观锁
  • 容器技术--Dockerfile 构建镜像
  • 习近平同巴西总统卢拉共同出席合作文件签字仪式
  • 智能手表眼镜等存泄密隐患,国安部提醒:严禁在涉密场所使用
  • 干部任职公示:陕西宁强、镇安两县县长拟进一步使用
  • 巴称巴控克什米尔地区11人在印方夜间炮击中身亡
  • 河北邯郸一酒店婚宴发生火灾:众人惊险逃生,酒店未买保险
  • 时代中国控股:前4个月销售额18.1亿元,境外债重组协议押后聆讯至5月底