Python 编程必备技能:解包。简化代码,提高效率

        在 Python 中,解包(Unpacking)是指将一个序列(列表、元组等)或字典中的元素解开,分别赋值给多个变量的过程。解包可以方便地将序列或字典中的元素分别取出来,用于后续的处理和操作。

在 Python 中,可以使用以下方式进行解包:

1.序列解包

包括列表、元组、字符串等可迭代对象

"""
1.序列解包
"""
# 列表解包
a, b, c = [1, 2, 3]
print(a, b, c)  # 1 2 3# 元组解包
a, b, c, d = (1, 2, 3, 4)
print(a, b, c, d)  # 1 2 3 4# 字符串解包
a, b, c = 'abc'
print(a, b, c)  # a b c

2.字典解包

"""
2.字典解包
"""
a, b, c = {'a': 1, 'b': 2, 'c': 3}.values()
print(a, b, c)  # 1 2 3

这个例子中,将字典 {'a': 1, 'b': 2, 'c': 3} 中的值解开,分别赋值给变量 abc,即 a=1b=2c=3

3.扩展解包

"""
3.扩展解包
"""
a, *b = [1, 2, 3, 4, 5]
print(a, b) # 1 [2, 3, 4, 5]

这个例子中,将列表 [1, 2, 3, 4, 5] 中的第一个元素赋值给变量 a,将剩余的元素解包后赋值给变量 b,即 a=1b=[2, 3, 4, 5]

4.嵌套解包

a, (b, c), d = [1, (2, 3), 4]
print(a, b, c, d)  # 1 2 3 4

这个例子中,将列表 [1, (2, 3), 4] 中的元素解开,分别赋值给变量 a(b, c)d,即 a=1b=2c=3d=4

5.可迭代对象解包

包括生成器、迭代器等。可以使用 * 操作符对可迭代对象进行解包,将其中的元素分别赋值给多个变量。

"""
5.可迭代对象解包
"""
a, b, *c = range(5)
print(a) # 0
print(b) # 1
print(c) # [2, 3, 4]

6.其他对象解包

例如函数返回值、模块属性等,也可以使用解包操作符进行解包。

"""
其他对象:例如函数返回值、模块属性等,也可以使用解包操作符进行解包。
"""def func():return 1, 2, 3a, b, c = func()
print(a)  # 1
print(b)  # 2
print(c)  # 3

7.***的区别

在 Python 中,常见***两种修饰符,*** 分别表示解包操作符和关键字参数操作符。

(1)* 可以用于解包一个序列或可迭代对象

将其中的元素分别赋值给多个变量。例如:

"""
*修饰符
"""
a, *b, c = [1, 2, 3, 4, 5]print(a, b, c)  #1 [2, 3, 4] 5

在这个例子中,使用 * 解包列表 [1, 2, 3, 4, 5],将其中的第一个元素赋值给变量 a,将中间的元素解包后赋值给变量 b,将最后一个元素赋值给变量 c

(2)** 可以用于传递关键字参数

将一个字典中的键值对解包成多个关键字参数。例如:

"""
**修饰符
"""
def func(a, b, c):print(a, b, c)params = {'a': 1, 'b': 2, 'c': 3}
func(**params)  # 1 2 3

在这个例子中,使用 ** 解包字典 params,将其中的键值对 {a: 1, b: 2, c: 3} 解包成关键字参数 a=1b=2c=3,传递给函数 func

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

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

相关文章

Nextjs学习入门 - 创建第一个项目

1 通过npx创建一个nextjs项目 通过命令创建: npx create-next-applatest 得到如下项目结构图: my-app- src //源代码目录- app //引用目录- favicon.ico //网站图标- globals.css //全局css- layout.tsx //布局文件- page.tsx //页面 路径"…

AntD上传文件 结合Axios 服务端由Spring MVC接收

以下将演示:如何使用AntD的上传组件,结合axios工具,向Spring MVC服务端上传文件。 前端发送 基于AntD的上传组件,采用手工上传模式;上传的同时,附加了一个category参数; const [category, setC…

Scikit-Learn 支持向量机分类

Scikit-Learn 支持向量机分类 1、支持向量机(SVM)1.1、SVM概述1.2、SVM原理1.3、SVM的损失函数 1、支持向量机(SVM) 1.1、SVM概述 在机器学习中,支持向量机(Support Vector Machine,SVM&#x…

华为服务Fellow、首席项目管理专家,华为H5M项目管理标准制定主导者孙虎受邀为PMO大会演讲嘉宾

全国PMO专业人士年度盛会 华为服务Fellow、首席项目管理专家,华为H5M项目管理标准制定主导者孙虎先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾,演讲议题为“落地项目管理标准,打赢班长的战争”。大会将于5月25-26日在北京举办&am…

国民经济行业导入数据库码表

目录 1、先去下载word文档图片如下 2、粘贴到excel中形成insert 语句 3、创建临时表存excel中数据 4、创建码表保存信息 5、编写存储过程放入表中 5.1存储第四级码值及父机构 5.2存储第三级码值及父机构 5.3存储第二级码值及父机构 5.4存储第一级码值 6、导入成功查看…

react 使用WEB3.0控件开发包 V3.0接入海康威视摄像头

1、下载官方安装包: 2、安装官方插件 3、引入文件 在public/index 中引入监控依赖,这三个文件可以在下载的官方demo中找到 4、react 中使用 useEffect(() > { const ipInfo :[192.168.xxxx];//初始化摄像头const WebVideoCtrl window.WebVideoCtrl…

Linux下kafka单机版搭建

1.zookeeper的安装 这里使用3.6.4版本 前提:服务器已经安装了jdk,zookeeper运行需要jdk环境 1.1创建放zookeeper的目录 #创建目录 mkdir -p /usr/local/zookeeper#赋予权限 chmod 777 /usr/local/zookeeper1.2安装包的下载 #这里推荐去官网下载 https:…

泛型的初步认识(1)

前言~🥳🎉🎉🎉 hellohello~,大家好💕💕,这里是E绵绵呀✋✋ ,如果觉得这篇文章还不错的话还请点赞❤️❤️收藏💞 💞 关注💥&#x…

K8S面试题学习

参考K8S面试题(史上最全 持续更新)_kubernetes常见面试题-CSDN博客做的个人总结,规划是每天看10题,thx! 1.K8S是什么? 容器编排工具,主要用来管理容器化的一个应用,可以管理容器全…

Java 算法篇-深入了解 BF 与 KMP 算法

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 BF 算法概述 1.1 BF 算法实际使用 2.0 KMP 算法概述 2.1 KMP 算法实际使用 2.2 相比于 BF 算法实现,KMP 算法的重要思想 2.3 为什么要这样设计&#x…

listpack

目录 为什么有listpack? listpack结构 listpack的节点entry 长度length encoding编码方式 listpack的API 1.创建listpack 2.遍历操作 正向遍历 反向遍历 3.查找元素 4.插入/替换/删除元素 总结 为什么有listpack? ziplist是存储在连续内存空间,节省…

华为云服务镜像手动更换

操作步骤: 1、进入华为云首页点击云容器引擎CCE; 2、选择你所要更换镜像的环境【这里以dev环境演示】; 3、点击dev环境后选择顶部的命名空间,点击【工作负载】中右侧栏的【升级】按钮; 4、点【更换镜像】选择你在test…

华为OD-C卷-测试用例执行计划[100分]Python3-100%

题目描述 某个产品当前迭代周期内有 N 个特性(F1,F2,......FN)需要进行覆盖测试,每个特性都被评估了对应的优先级,特性使用其 ID 作为下标进行标识。 设计了 M 个测试用例(T1,T2,......,TM),每个测试用例对应一个覆盖特性的集合,测试用例使用其 ID 作为下标进行标识,…

C++之类和对象三

目录 拷贝构造函数 定义铺垫 浅拷贝 深拷贝 总结 拷贝构造函数 那在创建对象时,可否创建一个与一个对象一某一样的新对象呢? 定义铺垫 构造函数:只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰)&#xff0c…

第十五届蓝桥杯大赛软件赛省赛(Java 大学B组)

蓝桥杯 2024年省赛真题 Java 大学B组 试题 A: 报数游戏试题 B: 类斐波那契循环数试题 C: 分布式队列 在找工作,随便写写,安定下来再把去年国赛题解补上 试题 A: 报数游戏 本题总分: 5 5 5 分 【问题描述】 小蓝和朋友们在玩一个报数游戏。由…

顺丰同城急送API对接(附源码)

一、背景 最近公司让我对接顺丰同城急送的API,讲讲里面需要注意的几点 官方的API文档有些示例代码也不全,具体细节不多说,如果你现在也需要对接他们API,可以参考本篇博客再配合官方文档结合起来看,可以让您再开发的时…

期权小知识科普

期权的交易时间 上交所期权合约的交易时间为每个交易日9:15至9:25、9:30至11:30、13:00至15:00。 其中,9:15至9:25为开盘集合竞价时间,14:57-15:00为收盘集合竞价时间,其余时段为连续竞价时间,交易所规则另有规定的除…

Pytorch-自动微分模块

🥇接下来我们进入到Pytorch的自动微分模块torch.autograd~ 自动微分模块是PyTorch中用于实现张量自动求导的模块。PyTorch通过torch.autograd模块提供了自动微分的功能,这对于深度学习和优化问题至关重要,因为它可以自动计算梯度&#xff0c…

VUE-列表

VUE-列表 列表功能 如下例子 列表展示 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv&qu…

CorelDRAW Graphics Suite2024最新永久免费版功能强大的图形设计软件

CorelDRAW Graphics Suite是一款功能强大的图形设计软件套件&#xff0c;它提供了丰富的绘图工具、编辑功能和设计资源&#xff0c;适用于从专业设计师到普通用户的广泛群体。以下是CorelDRAW Graphics Suite的一些主要功能特点&#xff1a; 矢量图形设计&#xff1a;CorelDRAW…