详解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自定义进程池实例分析【生产者、消费者模型问题】
Sep 19 Python
python timestamp和datetime之间转换详解
Dec 11 Python
Python爬虫实现(伪)球迷速成
Jun 10 Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
Apr 30 Python
Pyqt清空某一个QTreeewidgetItem下的所有分支方法
Jun 17 Python
python对文件目录的操作方法实例总结
Jun 24 Python
Django中间件基础用法详解
Jul 18 Python
python分布式计算dispy的使用详解
Dec 22 Python
Matplotlib scatter绘制散点图的方法实现
Jan 02 Python
用python写爬虫简单吗
Jul 28 Python
python时间序列数据转为timestamp格式的方法
Aug 03 Python
手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤
Aug 07 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中替换字符串中的空格为逗号','的方法
2014/06/09 PHP
PHP抓取网页、解析HTML常用的方法总结
2015/07/01 PHP
php微信支付接口开发程序
2016/08/02 PHP
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
PHP receiveMail实现收邮件功能
2018/04/25 PHP
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
JQuery 学习笔记 选择器之五
2009/07/23 Javascript
js控制页面控件隐藏显示的两种方法介绍
2013/10/09 Javascript
页面按钮禁用与解除禁用的方法
2014/02/19 Javascript
jQuery中:hidden选择器用法实例
2014/12/30 Javascript
Javascript实现单例模式
2016/01/24 Javascript
javascript轻量级库createjs使用Easel实现拖拽效果
2016/02/19 Javascript
PHP实现记录代码运行时间封装类实例教程
2017/05/08 Javascript
es6新特性之 class 基本用法解析
2018/05/05 Javascript
详解webpack的proxyTable无效的解决方案
2018/06/15 Javascript
Vue 刷新当前路由的实现代码
2019/09/26 Javascript
京东优选小程序的实现代码示例
2020/02/25 Javascript
微信小程序实现拨打电话功能的示例代码
2020/06/28 Javascript
[01:12:44]VG vs Mineski Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
详解Python中dict与set的使用
2015/08/10 Python
Python for循环生成列表的实例
2018/06/15 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
2018/11/14 Python
Python 实用技巧之利用Shell通配符做字符串匹配
2019/08/23 Python
如何基于Python pygame实现动画跑马灯
2020/11/18 Python
pymongo insert_many 批量插入的实例
2020/12/05 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
2020/12/18 Python
Yankee Candle官网:美国最畅销蜡烛品牌之一
2020/01/05 全球购物
人力资源管理专业学生自我评价
2013/11/20 职场文书
生物科学系大学生的自我评价
2013/12/20 职场文书
购房意向书
2014/08/30 职场文书
趣味运动会开幕词
2015/01/28 职场文书
地道战观后感500字
2015/06/04 职场文书
篮球赛闭幕式主持词
2015/07/03 职场文书
2016高一新生军训心得体会
2016/01/11 职场文书
SQL Server2019数据库备份与还原脚本,数据库可批量备份
2021/11/20 SQL Server
Flutter集成高德地图并添加自定义Maker的实践
2022/04/07 Java/Android