Python3 序列解包
Python 中有很多很实用的语法糖,这些语法糖可以帮助我们简化代码、更易理解等优点,接下里再看一个 Python3 中特别实用的语法序列解包(序列解包是 Python 3.0 之后才有的语法)。
那什么是序列解包呢?先看一个例子:
>>> a, b, c = 1, 2, 3 >>> a 1 >>> b 2 >>> c 3 >>>
这种方法并不限于列表和元组,而是适用于任意序列类型(甚至包括字符串和字节序列)。只要赋值运算符左边的变量数目与序列中的元素数目相等,你都可以用这种方法将元素序列解包到另一组变量中。
解包的使用还可以更有逼格,可以利用 * 表达式获取单个变量中的多个元素,只要它的解释没有歧义即可。
* 获取的值默认为 list
# 获取剩余部分:
>>> a, b, *c = 0, 1, 2, 3 >>> a 0 >>> b 1 >>> c [2, 3]
# 获取中间部分:
>>> a, *b, c = 0, 1, 2, 3 >>> a 0 >>> b [1, 2] >>> c 3
# 如果左值比右值要多,那么带 * 的变量默认为空
>>> a, b, *c = 0, 1 >>> a 0 >>> b 1 >>> c [] >>> a, *b, c = 0, 1 >>> a 0 >>> b [] >>> c 1
# 嵌套解包
>>> (a, b), (c, d) = (1, 2), (3, 4) >>> a 1 >>> b 2 >>> c 3 >>> d 4 >>> a, b, c, d (1, 2, 3, 4)
接下来实战一下,假如一个字符串 'ABCDEFGH',要输出下列格式:
A ['B', 'C', 'D', 'E', 'F', 'G', 'H'] B ['C', 'D', 'E', 'F', 'G', 'H'] C ['D', 'E', 'F', 'G', 'H'] D ['E', 'F', 'G', 'H'] E ['F', 'G', 'H'] F ['G', 'H'] G ['H'] H []
即每次取出第一个作为首,然后的字符串拆成列表,放置在后面
一般的处理过程是:
1. 将切片中索引为 0 的字符赋值给 a
2. 将切片中索引为 1 之后字符再赋值给 s
3. 用 list 函数将字符串转变为列表
4. 用 while 循环来 s 来判断,为空,则退出循环
>>> s = 'ABCDEFGH' >>> while s: ... x, s = s[0], list(s[1:]) ... print(x, s) ... A ['B', 'C', 'D', 'E', 'F', 'G', 'H'] B ['C', 'D', 'E', 'F', 'G', 'H'] C ['D', 'E', 'F', 'G', 'H'] D ['E', 'F', 'G', 'H'] E ['F', 'G', 'H'] F ['G', 'H'] G ['H'] H []
上面的处理,可以用序列解包的方法会来处理。序列解包,在赋值时无疑更方便、更简洁、更好理解、适用性更强!
运用序列解包的功能重写上面的代码:
>>> s = 'ABCDEFGH' >>> while s: ... x, *s = s ... print(x, s) ... A ['B', 'C', 'D', 'E', 'F', 'G', 'H'] B ['C', 'D', 'E', 'F', 'G', 'H'] C ['D', 'E', 'F', 'G', 'H'] D ['E', 'F', 'G', 'H'] E ['F', 'G', 'H'] F ['G', 'H'] G ['H'] H []
————————————————
原文链接:https://blog.csdn.net/yilovexing/article/details/80576788
分类:
[32] Python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
2020-04-10 用R一页绘制多图 多页绘图
2016-04-10 geom_path: Each group consist of only one observation. Do you need to adjust the group aesthetic?
2016-04-10 R 给data.frame(dataframe)添加一列
2016-04-10 ggplot2 legend图例的修改
2016-04-10 Plotting means and error bars (ggplot2)