网站首页 > 开源技术 正文
将元祖、列表、字典、字符串、生成器等整体中的每个元素当成个体剥离出来,这个过程就是解包,反过来即为压包。
一.解包
1.简单解包
#元组 a,b,c=("a","b","c") #列表 a,b,c=["a","b","c"] #字典 a,b,c={"a":1,"b":2,"c":3} #字符串 a,b,c="abc" #生成器 a,b,c = [x+1 for x in range(3)] #迭代器 a,b,c = enumerate(["a","b"."c"])
可迭代对象都可以这么做,如果待赋值变量与可迭代对象数量不一致则会报错,但可用*号表示多个元素
2.*号在解包中的使用
比如我们要计算平均分,去除最高分和最低分,除了用切,还可以用解包的方式获得中间的数值
a,*b,c = [90,80,70,60,50] 输出:a:90,b:[80,70,60],c:50
3.复杂点的解压
mylist = [("apple","red",1),("banana","white",2),("orange","orange",3)] for fruit,*args in mylist: print(fruit,args) 输出: apple ['red', 1] banana ['white', 2] orange ['orange', 3]
二.压包
压包是解包的逆过程,用zip函数实现,
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象(Python3)。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
a = [1,2,3] b = [4,5,6] for i in zip(a,b) print(i) 输出: (1,4) (2,5) (3.6)
三.解包和压包结合
下面例子实现:两个列表对应数值相加
a = [1,2,3] b = [4,5,6] for i,j in zip(a,b) print(i+j) 输出: 5 7 9
细细拆解上面过程,可以看出步骤是这样的
- 先是zip函数将a b压包成为一个可迭代对象
- 对可迭代对象的每一个元素((1, 4))进行解包(i, j = (1, 4))
- 此时就可以分别调用i j变量进行计算
四._号在解压包中的使用
当一些元素不用时,用_表示是更好的写法,可以让读代码的人知道这个元素是不要的
person = ("adou",23,80,("12","13","2018")) name,*_,(*_,year) = person print(name,year) 输出: adou 2018
猜你喜欢
- 2024-10-10 史上最全的Java面试资料——公司面试必备(含面试题答案)
- 2024-10-10 小白鞋搭配运动装,空乘制服要给员工“幸福感”
- 2024-10-10 Linux解压ZIP文件的8个使用案例(linux中解压zip格式文件命令)
- 2024-10-10 【学习打卡】P基础知识-数据类型Dictionary(字典)
- 2024-10-10 BT下载利器CloudTorrent安装教程详解
- 2024-10-10 拉链元素夹持!Vans 新款 Old Skool DX Zip 将于本周发售!
- 2024-10-10 夯实基础:真的清楚JDK 、JRE 与JVM之间的关系及区别?
- 2024-10-10 Java动态编译优化——URLClassLoader 内存泄漏问题解决
- 2024-10-10 opencv手写数字识别:SVM和KNearest
- 2024-10-10 「B/S端开发」如何将DevExtreme添加到ASP.NET Core Angular应用
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)