Python 元组拆包示例(Tuple Unpacking)


Posted in Python onDecember 24, 2019

1.元组?

元组的特点:

相当于不可变得列表;

可用于没有字段名的记录。

pythn里的元组就相当于C语言里的数组,是不可变的,但是也可以容纳不同类型的元素,也是容器的一种。

>>> t = (1,2,'a','b','c')
>>> t
(1, 2, 'a', 'b', 'c')
>>> type(t)
<class 'tuple'>

元组主要有两个方法:

index():获取指定元素在元组内的下标

count():统计指定元素在元组内出现的次数

元组的定义和结构和列表很像,但是使用起来比较简单,元组的元素用‘()'包含起来。

其实在元组的使用过程中有一些比较方便和实用的小方法,接下来就做一个简单的介绍!

2.元祖拆包

元祖拆包就是将元组中的元素分别赋给变量:

>>> info = ('xian','2018','7.17')
>>> info
('xian', '2018', '7.17')
>>> city,year,date = info
>>> city
'xian'
>>> year
'2018'
>>> date
'7.17'

拆包就相当于把元组中的元素拆分成单个的元素,可以用这些被拆分了的元素来完成想要做的事!

比如,可以十分方便的输出元组内的值:

>>> print('%s\n%s\n%s\n'%info)
xian
2018
7.17

还可以玩的更六一点哦:

>>> infos = [info,('jian','2018','7.22'),('zhengzhou','2018','9.1')]
>>> infos
[('xian', '2018', '7.17'), ('jian', '2018', '7.22'), ('zhengzhou', '2018', '9.1')]
>>> for i in infos :
  print('%s %s %s'%i)


xian 2018 7.17
jian 2018 7.22
zhengzhou 2018 9.1

当然,还有更加666的用法哦,有时候我们可以多个参数写进一个元组里,然后把这个元组当做相应函数的参数列表穿进去:

先介绍一个python的内建函数:divmod(a,b) a,b是两个数,这个函数返回一个元组,这个元组为(a//b,a%b),即返回a除以b,a%b的结果组成的元组。 现在我们就将一个元组作为divmod的参数传进去:

>>> a = (20,8)
>>> divmod(*a)
(2, 4)
>>>

不过我们注意到,虽然我们将参数放进了一个元组里,但是在作为参数列表传进去的时候在元组名前要加一个 ‘ * ' ! 当我只需要其中几个元素的时候怎么办呢?

>>> _,_,date = info
>>> date
'7.17'

这里‘ _ '就相当于一个占位符,可以抵消掉我们不想要的元素! 这里又有一个问题了,当元组内的元素太多,而我又只要其中几个元素的值,总不能用很多变量去抵消我不要的元素吧?当然不用!

>>> city,*rest = info
>>> city
'xian'
>>> rest
['2018', '7.17']

在这里我们用*var-name的方法代表剩余的元素,在python里常用这种方法来代表不起确定数量参数!

>>> a,b,*rest,c,d = range(10)
>>> a
0
>>> b
1
>>> c
8
>>> d
9
>>> rest
[2, 3, 4, 5, 6, 7]

在python里有一个很方便交换变量值的方法:

>>> a = 10
>>> b = 20
>>> a,b = b,a
>>> a
20
>>> b

3.具名元组?

为什么在文章开头说元祖的特点之一是没有字段名记录呢?如果元组里的元素有字段名,那么元组不就是字典,是键-值对了吗?的确,我们一般用的元组中的各个元素是没有字段名的,但是还有一种特殊的元组——具名元组。

具名元组是带有字段名元组,虽然说是元组,但是实际上是类的一种。要想构建一个具名元组,需要使用python里的一个工厂函数:collections.namedtuple(typename, field_names, verbose=False, rename=False) . namedtuple需要两个必要函数,typename是构建的具名元组的元组类型名,field_names是这个具名元组类里的各个字段的名字,名字之间用空格或者逗号隔开,verbose若为True则会打印这个类的详细信息,若rename为True则会把field_names中与python关键字冲突或者重复的字段用这个关键字的位置来替代,如:[‘abc', ‘def', ‘ghi', ‘abc']会被转换为 [‘abc', ‘_1', ‘ghi', ‘_3']。

>>>City = namedtuple('City',"country,capital,population")
>>>xian = City('china','beijing','1000w')
>>>> xian
City(country='china', capital='beijing', population='1000w')

从以上代码我们可以看到,我们可以使用namedtuple构建一个类,创建的类就是一个具名元组,在我们初始化一个具名元组的时候就像初始化一个类一样!

这篇Python 元组拆包示例(Tuple Unpacking)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python+selenium实现截图图片并保存截取的图片
Jan 05 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
Feb 24 Python
Python设计模式之策略模式实例详解
Jan 21 Python
python视频按帧截取图片工具
Jul 23 Python
Django项目中使用JWT的实现代码
Nov 04 Python
python manage.py runserver流程解析
Nov 08 Python
pytorch之inception_v3的实现案例
Jan 06 Python
python不相等的两个字符串的 if 条件判断为True详解
Mar 12 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
Jun 04 Python
pycharm 关掉syntax检查操作
Jun 09 Python
python 字符串的驻留机制及优缺点
Jun 19 Python
python Tornado框架的使用示例
Oct 19 Python
Python 余弦相似度与皮尔逊相关系数 计算实例
Dec 23 #Python
Python编译成.so文件进行加密后调用的实现
Dec 23 #Python
Cython编译python为so 代码加密示例
Dec 23 #Python
Python编译为二进制so可执行文件实例
Dec 23 #Python
Python+opencv+pyaudio实现带声音屏幕录制
Dec 23 #Python
python 实现屏幕录制示例
Dec 23 #Python
关于ZeroMQ 三种模式python3实现方式
Dec 23 #Python
You might like
PHP include_path设置技巧分享
2011/07/03 PHP
利用php递归实现无限分类 格式化数组的详解
2013/06/08 PHP
PHP的curl实现get,post和cookie(实例介绍)
2013/06/17 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
Yii2框架自定义验证规则操作示例
2019/02/08 PHP
js获取当前select 元素值的代码
2010/04/19 Javascript
jquery动态添加删除一行数据示例
2014/06/12 Javascript
js使用html()或text()方法获取设置p标签的显示的值
2014/08/01 Javascript
script标签属性用type还是language
2015/01/21 Javascript
JavaScript中神奇的call()方法
2015/03/12 Javascript
jquery中$each()方法的使用指南
2015/04/30 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
2015/06/06 Javascript
在Mac OS下使用Node.js的简单教程
2015/06/24 Javascript
javascript容错处理代码(屏蔽js错误)
2017/01/20 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
JS实现延迟隐藏功能的方法(类似QQ头像鼠标放上展示信息)
2017/12/28 Javascript
详解VUE单页应用骨架屏方案
2019/01/17 Javascript
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
python遍历类中所有成员的方法
2015/03/18 Python
python自定义类并使用的方法
2015/05/07 Python
python 实现登录网页的操作方法
2018/05/11 Python
PyQt5 多窗口连接实例
2019/06/19 Python
Python 复平面绘图实例
2019/11/21 Python
keras之权重初始化方式
2020/05/21 Python
Windows 平台做 Python 开发的最佳组合(推荐)
2020/07/27 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
2020/08/07 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
2020/08/27 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
css3实现垂直下拉动画菜单示例
2014/04/22 HTML / CSS
jurlique茱莉蔻英国官网:澳洲天然护肤品
2018/08/03 全球购物
写自荐信的注意事项
2014/03/09 职场文书
农林环境专业求职信
2014/03/13 职场文书
党的群众路线教育实践活动查摆问题及整改措施
2014/10/10 职场文书
赔偿协议书
2015/01/27 职场文书
基于Redis6.2.6版本部署Redis Cluster集群的问题
2022/04/01 Redis