【进阶11】【自学笔记】Python解包系列操作
一、Python解包定义
1 | Python解包是指将一个可迭代对象(如列表、元组、字典等)中的元素分别赋值给多个变量的过程。解包可以通过在变量前添加星号 `*` 来实现,也可以通过在变量前添加双星号 `**` 来实现字典解包。解包可以简化代码,使代码更加清晰易懂。 |
二、解包实例
1、最简单的解包
1 2 3 4 5 6 7 | a, b, c = [1, 2, 3] print(a, b, c) # 输出结果 1 2 3 |
列表有 3 个元素,此时也需要 3 个变量去接,否则会报错
1 2 3 4 5 6 | a, b = [1, 2, 3] # 输出结果 a, b = [1, 2, 3] ValueError: too many values to unpack (expected 2) |
太多值无法解包
2、元组解包
1 2 3 4 5 6 7 | >>> a,b,c = (1,2,3) >>> a 1 >>> b 2 >>> c 3 |
3、字符串解包
1 2 3 4 5 6 7 | >>> a,b,c = "abc" >>> a 'a' >>> b 'b' >>> c 'c' |
4、集合解包
1 2 3 4 5 6 7 8 | >>> a,b,c = {1,2,3} >>> a 1 >>> b 2 >>> c <strong>3 </strong> |
5、字典解包
1 2 3 4 5 6 7 | >>> a,b,c = { "a" :1, "b" :2, "c" :3} >>> a 'a' >>> b 'b' >>> c 'c' |
6、多变量赋值
1 2 3 4 5 | >>> a, b = 1, 2 >>> a 1 >>> b 2 |
- 其实也是元组解包
- 元组在 = 右边的时候,可以忽略 ( )
7、生成器解包
1 2 3 4 5 6 7 | # 生成器 a, b, c = (x + 1 for x in range(3)) print(a, b, c) # 输出结果 1 2 3 |
8、函数参数解包
主要是可变参数、关键字参数
解包小栗子一
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # 函数 def test(a, b, c): print(a, b, c) # 正常逐个传参 test(1, 2, 3) # 只传一个可迭代对象,就需要解包 test(*[1, 2, 3]) test(*{1, 2, 3}) test(*(1, 2, 3)) # 输出结果 1 2 3 1 2 3 1 2 3 1 2 3 |
解包小栗子二
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # 函数 def test(a, b, c): print(a, b, c) # 关键字传参 test(a=1, b=2, c=3) # 只传一个可迭代对象,就需要解包,和上面写法是等价的 test(**{ "a" : 1, "b" : 2, "c" : 3}) # 输出结果 1 2 3 1 2 3 |
9、在表达式中使用解包
示例01
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # 表达式解包 print(range(3), 3) print(*range(3), 3) print([*range(3), 3]) print({ "a" : 1, **{ "b" : 2, "c" : 3}}) # 输出结果 range(0, 3) 3 0 1 2 3 [0, 1, 2, 3] { 'a' : 1, 'b' : 2, 'c' : 3} |
示例02:拼接列表
1 2 3 4 5 6 7 8 9 | # 解包拼接列表 list1 = [1, 2] list2 = range(3, 5) list3 = [*list1, *list2] print(list3) # 输出结果 [1, 2, 3, 4] |
示例03:拼接两个字典
1 2 3 4 5 6 7 8 9 | # 解包拼接字典 dict1 = { "a" : 1, "b" : 2} dict2 = { "name" : "yy" , "age" : 22} dict3 = {**dict1, **dict2} print(dict3) # 输出结果 { 'a' : 1, 'b' : 2, 'name' : 'yy' , 'age' : 22} |
解包总结
- 自动解包支持一切可迭代对象
- 函数调用时,可以用 * 或者 ** 解包可迭代对象
本文来自博客园,作者:橘子偏爱橙子,转载请注明原文链接:https://www.cnblogs.com/xfbk/p/17297630.html
分类:
python进阶篇
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
2022-04-07 【测试理论-04】软件测试基本流程和bug缺陷级别分类
2022-04-07 【测试理论-03】常用功能测试用例设计的方法总结