Python基础学习笔记(七)——元组

目录

  • 一、一维元组的介绍、创建与修改
  • 二、组合的基本操作
    • 1. 遍历
    • 2. 取长度
    • 3. 取最值
    • 4. 打包
    • 5. 批处理
      • 5.1 map()函数
      • 5.2 lambda 表达式
      • 5.3 lambda 表达式 + map()函数

一、一维元组的介绍、创建与修改

  元组tuple),一种不可变、有序、可重复的数据结构,属于不可变序列,由小括号()内、用逗号分隔的一组元素组成。

  与同为序列的列表一样,元组的元素可以是任意数据类型的对象引用,并通过索引访问元素;但区别于可变序列,我们无法直接对元组进行增删改操作

  准确的说,应该是元组对对象的引用,也就是元素id不能改变。如果元素指向不可变对象,那么改变它通常指的是改变id;但如果元素指向可变对象,则可以修改值而内存地址不变

# 修改元组
t = (1, [2])
t[1][0] = 1print(t)
(1, [1])

  在实际应用中,不可变序列有一定优势。为了防止多端同时操作发生混乱,通常会在某一端操作时,对数据结构上。在多任务环境下,同时操作多个可变对象需要加锁,而不可变对象则不用。这是因为,它们只能被浏览或取出数据,而不能被修改,所以在程序中尽量使用不可变序列。

  与列表同理,元组同样有赋值创建引用创建,对应类似的函数tuple()。我们可以通过tuple()list()实现元组的间接修改,即:使用list()函数把元组转化成列表,然后在列表上进行修改,最后使用tuple()转化回元组。

# 空元组
t = ()
t = tuple()# 赋值创建
t = (1,)  # 单元素元组的创建格式
t = (1, 2, 3)
t = 1, 2, 3  # 省略写法# 引用创建
t = tuple([1, 2, 3])
print(t)# 间接修改
lst = list(t)
lst[0] = 0
t = tuple(lst)
print(t)
(1, 2, 3)
(0, 2, 3)


二、组合的基本操作

  元组属于序列,适用于序列的所有基本操作,这部分内容在Python基础学习笔记(六)——列表中,这里不再重复。

  以下操作适用于所有组合,包括列表、元组、字符串、集合、字典,下面主要以元组为例。

1. 遍历

t = 1, 2, 3
for i in t:print(i)
1
2
3


2. 取长度

  len()函数:返回组合内的元素个数

t = 1, 2, 3
print(len(t))
3


3. 取最值

  max()函数:返回可迭代对象内元素的最大值
  min()函数:返回可迭代对象内元素的最小值

t = 1, 2, 3
print(max(t), min(t))
3 1


4. 打包

  zip()函数:将一个或多个可迭代对象对应元素依次打包成元组,并返回由这些元组组成的zip对象迭代器。若输入的可迭代对象的长度不同,打包的元组数量取最短可迭代对象的长度

d = {'a': 1}                           
t = 1, 2                               
s = {'a', 'b', 'c'}   # 打包单个可迭代对象                          
for i in zip(d):                       print(i)          # 打包多个不同长度的可迭代对象        
print(list(zip(t, s)))                                                         
('a',)
[(1, 'c'), (2, 'a')]


5. 批处理

5.1 map()函数

  map(function, iterable)函数:对可迭代对象中的每一个元素调用指定函数,返回一个map对象迭代器

t = 1, 2for i in map(float, t):print(i)
1.0
2.0


5.2 lambda 表达式

  lambda表达式是一种匿名函数,可在非正式定义函数的情况下使用。它由关键字lambda开头,后接参数列表,然后用冒号分隔,最后是一个表达式
  它们通常作为临时函数,用于执行简单操作或为其他函数传递参数

add = lambda x, y: x + y
print(add(2, 3))
5


5.3 lambda 表达式 + map()函数

  该模式允许我们更灵活地进行多个可迭代对象之间的自定义运算

t1 = 1, 2, 3
t2 = 11, 22, 33
t3 = 10, 20, 30
# 参数列表与iterable依次对应
print(list(map(lambda x, y, z: x*y-z, t1, t2, t3)))  
[1, 24, 69]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/15561.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot如何开启注解的形式,使用Redis Cache

Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单的添加注解,就能实现缓存功能。 Spring Cache 提供了一层抽象,底层可以切换不同的缓存实现,例如:Redis、EHCache、Caffeine等 步骤&#xf…

【大模型】Spring AI对接ChatGpt使用详解

目录 一、前言 二、spring ai介绍 2.1 什么是Spring AI 2.2 Spring AI 特点 2.3 Spring AI 为开发带来的便利 2.4 Spring AI应用领域 2.4.1 聊天模型 2.4.2 文本到图像模型 2.4.3 音频转文本 2.4.4 嵌入大模型使用 2.4.5 矢量数据库支持 2.4.6 用于数据工程ETL框架 …

2024-05-22 VS2022使用modules

点击 <C 语言编程核心突破> 快速C语言入门 VS2022使用modules 前言一、准备二、使用其一, 用VS installer 安装模块:第二个选项就是, 与你的代码一同编译std模块, 这个非常简单, 但是也有坑. 总结 前言 要解决问题: 使用VS2022开启modules. 想到的思路: 跟着官方文档整…

Java进阶学习笔记19——内部类

1、 内部类&#xff1a; 是类中五大成分之一&#xff08;成员变量、方法、构造函数、内部类、代码块&#xff09;&#xff0c;如果一个类定义在另一个 类的内部&#xff0c;这个类就是内部类。 场景&#xff1a;当一个类的内部&#xff0c;包含了一个完整的事物&#xff0c;且…

Android ART 虚拟机简析

源码基于&#xff1a;Android U 1. prop 名称选项名称heap 变量名称功能 dalvik.vm.heapstartsize MemoryInitialSize initial_heap_size_ 虚拟机在启动时&#xff0c;向系统申请的起始内存 dalvik.vm.heapgrowthlimit HeapGrowthLimit growth_limit_ 应用可使用的 max…

Scikit-Learn朴素贝叶斯

Scikit-Learn朴素贝叶斯 1、朴素贝叶斯1.1、贝叶斯分类1.2、贝叶斯定理1.3、贝叶斯定理的推导1.4、朴素贝叶斯及原理1.5、朴素贝叶斯的优缺点2、Scikit-Learn朴素贝叶斯2.1、Sklearn中的贝叶斯分类器2.2、Scikit-Learn朴素贝叶斯API2.3、Scikit-Learn朴素贝叶斯实践(新闻分类与…

Python——文件操作相关

1. 读文件方式 第一种 有规律的名称 第二种 无规律的名称 2. 文件名称 用 “{:05d}” 来规范输出数字所占位数&#xff0c;例如&#xff1a; for i in range(100):gt_file Reference/ image "{:05d}".format(i) .jpgprint(gt_file)输出&#xff1a; ... Re…

爬山算法的详细介绍

目录 &#x1f349;概述 &#x1f349; 步骤 &#x1f349; 优缺点 &#x1f348;优点 &#x1f348;缺点 &#x1f348;应对策略 &#x1f349;示例 &#x1f348;旅行商问题 &#x1f34d;步骤 &#x1f34d;分解代码 &#x1f34e;包含头文件 &#x1f34e;定义函…

Cortex-M3的SysTick 定时器

目录 概述 1 SysTick 定时器 1.1 SysTick 定时器功能介绍 1.2 SysTick 定时器功能实现 1.3 SysTick在系统中的作用 2 SysTick应用的实例 2.1 建立异常服务例程 2.2 使能异常 2.3 闹钟功能 2.4 重定位向量表 2.5 消灭二次触发 3 SysTick在FreeRTOS中的应用 3.1 STM…

【代码】结构体

哈喽大家好&#xff0c;我是学霸小羊&#xff0c;今天讲讲结构体。 先看例题&#xff1a; 例1.老师给了小杨一份同学们的考试成绩&#xff0c;包括语数英三科&#xff0c;老师让小明按照总分排序&#xff0c;请你帮帮他吧&#xff01; 输入数据&#xff1a; 第1行 学生总人…

在docker中运行SLAM十四讲程序

《十四讲》的示例程序依赖比较多&#xff0c;而且系统有点旧。可以在容器中运行。 拉取镜像 docker pull ddhogan/slambook:v0.1这个docker对应的github&#xff1a;HomeLH/slambook2-docker 拉下来之后&#xff0c;假如是Windows系统&#xff0c;需要使用XLaunch用于提供X11…

面试大杂烩之kafka

面试这个领域最近环境不行&#xff0c;所以卷起来流量挺大 关于K8s 其实看我之前的博客&#xff0c;k8s刚有点苗头的时候我就研究过&#xff0c;然后工作的时候间接接触 也自己玩过 但是用的不多就忘记了&#xff0c;正苦于不知道写什么&#xff0c;水一篇 用来面试应该是够了…

C++ | Leetcode C++题解之第111题二叉树的最小深度

题目&#xff1a; 题解&#xff1a; class Solution { public:int minDepth(TreeNode *root) {if (root nullptr) {return 0;}queue<pair<TreeNode *, int> > que;que.emplace(root, 1);while (!que.empty()) {TreeNode *node que.front().first;int depth que…

VC编译sample_onnx_mnist提示无法打开输入文件cudnn.lib

出现错误 LNK1181 无法打开输入文件“C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\lib\x64\cudnn.lib” 解决办法&#xff1a;下载cudnn&#xff0c;NVIDIA cuDNN | NVIDIA Developer 拷贝相应的文件到CUDA安装的目录下。 VC编译libtorch提示无法打开输入文件cu…

huggingface 笔记:PretrainModel

1 from_pretrained 从预训练模型配置中实例化一个 PyTorch 预训练模型默认情况下&#xff0c;模型使用 model.eval() 设置为评估模式&#xff08;Dropout 模块被禁用&#xff09; 要训练模型&#xff0c;应该首先使用 model.train() 将其设置回训练模式 1.1 主要参数 pretra…

java 子类继承父类

为什么需要继承 我现在要有两个类一个 一个是小学生&#xff0c;一个是大学生 代码 小学生 package b; public class encapsulatio{public String name;public int age;public double score;public void setscore (double score) {this.scorescore;}public void testing() {S…

(三)MySQL 索引

欢迎访问 什么是索引&#xff1f; 提高查询效率的一种数据结构&#xff0c;索引是数据的目录 索引的分类 按「数据结构」分类&#xff1a;Btree索引、Hash索引、Full-text索引。按「物理存储」分类&#xff1a;聚簇索引、二级索引。按「字段特性」分类&#xff1a;主键索引…

Spring6 对 集成MyBatis 开发运用(附有详细的操作步骤)

详细实现操作步骤 具体实现内容&#xff1a;我们运用 Spring6 和 MyBatis 实现一个转账操作(该转账操作&#xff0c;进行一个事务上的控制&#xff0c;运用 MyBatis 执行 SQL 语句)。 第一步&#xff1a;准备数据库表 使用t_act表&#xff08;账户表&#xff09; 连接数据库的…

三个有意思的链表面试题的完成

上一篇博客我们已经完成了链表的所有内容&#xff0c;那么这一篇博客我们来看一下三个特别有意思的链表题目。 **第一个题目如下&#xff1a;**相信不少朋友看到这题目就已经晕了&#xff0c;那就简单说明下这个题目&#xff0c;题目就是创建一个链表&#xff0c;其中每个节点…

深入探索Java中的流式编程:优雅地处理集合数据

Java流式编程&#xff08;Stream API&#xff09;是Java 8引入的一项重要特性&#xff0c;它为处理集合数据提供了一种更为优雅和函数式的方式。通过流式操作&#xff0c;开发者可以以更简洁、更直观的方式处理数据&#xff0c;从而提高代码的可读性和可维护性。本文将深入探讨…