Python元组(tuple)一种不可变的有序数据类型的使用

news/2024/7/24 4:01:25 标签: python, 开发语言

Python元组(tuple)是一种不可变的有序数据类型,用于存储多个元素。元组的元素可以是不同的数据类型,如整数、浮点数、字符串等,并使用逗号进行分隔。元组一旦创建,其元素和长度都是固定的,不可被修改。

元组的原理是使用内存中的连续空间来存储元素,通过索引进行访问。由于元组是不可变的,所以在添加、修改、删除元素时,Python会重新分配内存空间。

元组的优点包括:

  • 不可变性:保证了元组的数据完整性和安全性。
  • 占用空间小:相比于列表,元组占用的内存空间较小。
  • 可以作为字典的键:由于元组是不可变的,可以用作字典的键。

元组的缺点包括:

  • 不可变性:限制了元组中的元素无法被修改,如果需要修改元素,则需要创建一个新的元组。
  • 无法直接删除元素:由于元组是不可变的,无法直接删除元组中的元素。

创建元组的方法:

python"># 使用圆括号创建空元组
my_tuple = ()

# 使用圆括号创建包含元素的元组
my_tuple = (1, 2, 3)

# 可以省略圆括号
my_tuple = 1, 2, 3

# 使用tuple()函数创建元组
my_tuple = tuple([1, 2, 3])

修改元组中的元素是无法实现的,但可以通过元组拼接或切片生成新的元组来修改元组的内容。

删除元组本身是不可行的,但可以使用del命令删除整个元组变量。

元组的应用场景包括:

  • 在函数返回多个值时,可以使用元组将多个返回值组合在一起。
  • 在字典中作为键使用,由于元组是不可变的,可以保证键的稳定性。
  • 存储多个项目的数据集,特别是希望数据不可变时。

需要注意的是,元组的不可变性并不代表元组中的元素本身是不可变的,如果元组中的元素是可变对象(如列表),则可以修改可变对象的内容。

遍历元组可以通过循环来实现,常用的有两种方式:

1.使用for循环遍历元组:

python">my_tuple = (1, 2, 3, 4, 5)
for item in my_tuple:
    print(item)

2.使用索引和循环结合来遍历元组:

python">my_tuple = (1, 2, 3, 4, 5)
for i in range(len(my_tuple)):
    print(my_tuple[i])

这两种方式都可以实现遍历元组的功能,按照索引顺序逐个访问元组中的元素并进行操作。使用for循环更加简洁和易于理解,推荐使用该方式遍历元组。

元组是不可变的数据类型,所以没有可以直接修改元组的函数。但是,元组有一些可以对元组进行操作的函数和方法,例如:

1.len():返回元组中元素的个数。

python">my_tuple = (1, 2, 3, 4, 5)
length = len(my_tuple)
print(length)  # 输出:5

2.count():返回指定元素在元组中出现的次数。

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

3.index():返回指定元素在元组中的索引位置(只返回第一个匹配的索引)。

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

这些函数可以对元组进行查询和操作,但并不会对元组本身进行修改。

在pytest框架中,可以通过元组来传递复杂参数给测试用例。这可以通过使用pytest的参数化装饰器@pytest.mark.parametrize来实现。

首先,需要导入pytest和参数化装饰器:

python">import pytest

然后,通过使用@pytest.mark.parametrize装饰器来定义测试用例,并传递元组作为参数:

python">@pytest.mark.parametrize("arg1, arg2", [(1, 2), (3, 4), (5, 6)])
def test_example(arg1, arg2):
    # 进行测试用例的操作
    assert arg1 + arg2 == arg1 * arg2

在上面的例子中,参数化装饰器指定了两个参数arg1和arg2,并通过元组传递了多组参数值。测试用例将会运行多次,每次使用不同的参数值进行测试。

运行测试时,pytest会自动根据传入的参数组合执行测试用例,并输出每次测试的结果。

这种方式使得测试用例能够使用不同的参数组合进行多次的重复性测试,方便进行测试覆盖和边界值测试等。


http://www.niftyadmin.cn/n/5305265.html

相关文章

【编译原理】期末预习PPT前四章笔记II

看了看学校的ppt,记的比较随意O.o 因为我的考试范围里边没有简答所以概念什么的没怎么记 没有简答只有选择真是太好了嘿嘿嘿 目录 I. 概述(好多字。。) 一、高级语言的分类 1、体裁 2、执行方式 二、各种语言的执行方式 三、编译程序…

安卓11通过脚本修改相应板型系统属性

安卓10以后rk的一套源码兼容很多板型,多种cpu型号都兼容了,这一点相比之前省心了很多,所以就诞生了需要一套代码兼容多种板子的需求,定制修改中需要经常修改系统属性,通过以下脚本一次实现: #!/bin/bashfu…

kubernetes(一)概述与架构

云原生实战 语雀 官网 Kubernetes 文档 | Kubernetes 更新:移除 Dockershim 的常见问题 | Kubernetes B站课程:https://www.bilibili.com/video/BV13Q4y1C7hS/?p26 1.概述 概述 | Kubernetes 大规模容器编排系统 kubernetes具有以下特性&#xf…

【技能---500G硬盘-Ubuntu 20.04安装分区参考】

文章目录 Ubuntu 20.04安装分区指导安装分区流程Ubuntu 系统分区关键一步----- 选择安装启动引导器的设备 Ubuntu 20.04安装分区指导 安装Ubuntu 20.04的时候可以自己指定各个内存空间的占用,值得注意的是,这里的分区有一定的技巧!&#xff0…

class_order 数组来实现重新编号或者改变类别

当你在处理分类问题时,数据集的标签(类别)可能是从0到n-1的整数,其中n是类别的总数。有时候,在进行模型训练之前,你可能想要改变类别的顺序或者重新编号。这可以通过class_order数组来实现。 问题描述&…

宝宝的听力发育进程

小宝宝听力发育进程: 在母亲怀孕中晚期,小宝宝就有了听觉:6个月胎儿的听力已经和成年人相当了。 ◆ 出生0-7天的小宝宝会随声音变化产生不同反应,当在宝宝耳边拍巴掌或摇摇铃,宝宝可能会有惊跳反应,或吓哭…

Windows 下用 C++ 调用 Python

文章目录 Part.I IntroductionChap.I InformationChap.II 预备知识 Part.II 语法Chap.I PyRun_SimpleStringChap.II C / Python 变量之间的相互转换 Part.III 实例Chap.I 文件内容Chap.II 基于 Visual Studio IDEChap.III 基于 cmakeChap.IV 运行结果 Part.IV 可能出现的问题Ch…

Spark调优解析-spark数据倾斜优化2(七)

1 数据倾斜优化 1.1为何要处理数据倾斜(Data Skew) 什么是数据倾斜 对Spark/Hadoop这样的大数据系统来讲,数据量大并不可怕,可怕的是数据倾斜。 何谓数据倾斜?数据倾斜指的是,并行处理的数据集中&#xf…