详解Python3序列赋值、序列解包


Posted in Python onMay 14, 2019

上节我们提到解决赋值中等号两边参数不一致的方法可以通过切片,但在Python3中我们可以利用特定的语法更加方便的处理这种情况,如下示例。

当带 * 出现在结尾间时

L = [1, 2, 3, 4, 5]
a, *b = L
print(a, b)

示例结果:

1 [2, 3, 4, 5]

我们可以看到a匹配了列表中第一个元素值,而b匹配了后面所有的内容,并且为列表。即当我们利用带 * 符号匹配时,就可以解决赋值时等号两边元素数量不相等的情形,那么这种带 * 的处理方式都有哪些详细的使用场景和用法呢?

当带 * 出现在中间时

L = [1, 2, 3, 4, 5]
a, *b, c = L
print(a, b, c)

示例结果:

1 [2, 3, 4] 5

即a和c获取了开头和结尾的元素值,而中间所有的元素值都是赋值给了b

当带 * 出现在开头时

L = [1, 2, 3, 4, 5]
*a, b = L
print(a, b)

即b获取了列表结尾的元素值,而开头到末尾但不包含末尾的所有元素值赋值给了a

通用化

类似序列赋值,扩展的序列解法的用法也可以扩展到任何序列类型,比如元组,字符串:

S = 'PYTHON'
a,b,*c = S
print(a,b,c)
a,b,*c = list(S)
print(a,b,c)

示例结果

P Y ['T', 'H', 'O', 'N']
P Y ['T', 'H', 'O', 'N']

即我们可以看到字符串的结果和处理列表非常相似,即和对 list(S) 进行扩展序列解包的结果一致。

一些边界情况

在使用扩展序列解包语法,我们也可能遇到一些极端的情况,比如没有剩下的内容用于匹配带 * 的项,此时该项会被赋值为空列表 [] 。

L = [1, 2, 3, 4]
a, b, c, d, *e = L
1 2 3 4 []

而如果在赋值时出现带多个 * 项,或者只有带 * 的项都会引发错误:

L = [1, 2, 3, 4]
*a, b, *c = L

L = [1, 2, 3, 4]
*a = L

*a, b, *c = L
   ^
SyntaxError: two starred expressions in assignment
  *a = L
  ^
SyntaxError: starred assignment target must be in a list or tuple

总结

以上所述是小编给大家介绍的Python3序列赋值、序列解包,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
跨平台python异步回调机制实现和使用方法
Nov 26 Python
python从入门到精通(DAY 2)
Dec 20 Python
Python中遇到的小问题及解决方法汇总
Jan 11 Python
如何高效使用Python字典的方法详解
Aug 31 Python
Python3对称加密算法AES、DES3实例详解
Dec 06 Python
Python学习笔记之图片人脸检测识别实例教程
Mar 06 Python
python中的&&及||的实现示例
Aug 07 Python
Python FTP文件定时自动下载实现过程解析
Nov 12 Python
Python Numpy 自然数填充数组的实现
Nov 28 Python
python实现PDF中表格转化为Excel的方法
Jun 16 Python
Python爬虫基础之爬虫的分类知识总结
May 13 Python
OpenCV 图像梯度的实现方法
Jul 25 Python
Python实战之制作天气查询软件
May 14 #Python
python中时间模块的基本使用教程
May 14 #Python
使用Python正则表达式操作文本数据的方法
May 14 #Python
Django如何防止定时任务并发浅析
May 14 #Python
python3 pygame实现接小球游戏
May 14 #Python
Django 多环境配置详解
May 14 #Python
python仿evething的文件搜索器实例代码
May 13 #Python
You might like
php计划任务之ignore_user_abort函数实现方法
2015/01/08 PHP
thinkPHP线上自动加载异常与修复方法实例分析
2016/12/01 PHP
PHP实现的数据对象映射模式详解
2019/03/20 PHP
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
jqTransform form表单美化插件使用方法
2012/07/05 Javascript
formvalidator验证插件中有关ajax验证问题
2013/01/04 Javascript
Javascript页面添加到收藏夹的简单方法
2013/08/07 Javascript
js读取注册表的键值示例
2013/09/25 Javascript
javascript自然分类法算法实现代码
2013/10/11 Javascript
利用Jquery实现可多选的下拉框
2014/02/21 Javascript
JavaScript中常见获取元素的方法汇总
2015/03/04 Javascript
js实现仿京东2级菜单效果(带延时功能)
2015/08/27 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
微信小程序 特效菜单抽屉效果实例代码
2017/01/11 Javascript
[01:04:14]VP vs TNC 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers
2014/11/05 Python
Python中使用bidict模块双向字典结构的奇技淫巧
2016/07/12 Python
Python读取sqlite数据库文件的方法分析
2017/08/07 Python
Python编程使用tkinter模块实现计算器软件完整代码示例
2017/11/29 Python
ubuntu中配置pyqt4环境教程
2017/12/27 Python
Python统计单词出现的次数
2018/04/04 Python
Python中实现变量赋值传递时的引用和拷贝方法
2018/04/29 Python
使用Python获取网段IP个数以及地址清单的方法
2018/11/01 Python
Python模块、包(Package)概念与用法分析
2019/05/31 Python
python返回数组的索引实例
2019/11/28 Python
俄罗斯Sportmarket体育在线商店:用于旅游和户外活动
2019/11/12 全球购物
编辑找工作求职信分享
2014/01/03 职场文书
班组拓展活动方案
2014/08/14 职场文书
校园主题婚礼活动策划方案
2014/09/15 职场文书
大学新生军训自我鉴定
2014/09/18 职场文书
银行授权委托书格式
2014/10/10 职场文书
2014年党风建设工作总结
2014/11/19 职场文书
教师工作表现评语
2014/12/31 职场文书
2015夏季作息时间调整通知
2015/04/24 职场文书
postgreSQL数据库基础知识介绍
2022/04/12 PostgreSQL
MySQL数据库安装方法与图形化管理工具介绍
2022/05/30 MySQL