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使用Flask框架获取当前查询参数的方法
Mar 21 Python
Python合并两个字典的常用方法与效率比较
Jun 17 Python
python实现根据主机名字获得所有ip地址的方法
Jun 28 Python
详解python基础之while循环及if判断
Aug 24 Python
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
Sep 20 Python
Python爬虫_城市公交、地铁站点和线路数据采集实例
Jan 10 Python
Django Web开发中django-debug-toolbar的配置以及使用
May 06 Python
python中利用h5py模块读取h5文件中的主键方法
Jun 05 Python
Django中自定义查询对象的具体使用
Oct 13 Python
基于Python数据分析之pandas统计分析
Mar 03 Python
Python小白学习爬虫常用请求报头
Jun 03 Python
python飞机大战游戏实例讲解
Dec 04 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 insert语法详解
2008/06/07 PHP
shopex主机报错误请求解决方案(No such file or directory)
2011/12/27 PHP
解析php中两种缩放图片的函数,为图片添加水印
2013/06/14 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
2014/09/29 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
2019/05/29 PHP
JavaScript 学习笔记(七)字符串的连接
2009/12/31 Javascript
jQuery之日期选择器的深入解析
2013/06/19 Javascript
Java/JS获取flash高宽的具体方法
2013/12/27 Javascript
javascript避免数字计算精度误差的方法详解
2014/03/05 Javascript
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
2015/08/21 NodeJs
理解javascript定时器中的setTimeout与setInterval
2016/02/23 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
2016/10/31 Javascript
JavaScript canvas实现围绕旋转动画
2017/11/18 Javascript
快速解决select2在bootstrap模态框中下拉框隐藏的问题
2018/08/10 Javascript
layui前端框架之table表数据的刷新方法
2018/08/17 Javascript
js事件on动态绑定数据,绑定多个事件的方法
2018/09/15 Javascript
node.js调用C++函数的方法示例
2018/09/21 Javascript
ES6基础之展开语法(Spread syntax)
2019/02/21 Javascript
浅析js实现网页截图的两种方式
2019/11/01 Javascript
JS获取表格视图所选行号的ids过程解析
2020/02/21 Javascript
vue使用axios实现excel文件下载的功能
2020/07/16 Javascript
vuex Module将 store 分割成模块的操作
2020/12/07 Vue.js
JS实现点击掉落特效
2021/01/29 Javascript
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
2017/06/12 Python
在Pandas中给多层索引降级的方法
2018/11/16 Python
Python3.5 Pandas模块之DataFrame用法实例分析
2019/04/23 Python
HTML的form表单和django的form表单
2019/07/25 Python
基于Pytorch SSD模型分析
2020/02/18 Python
乌克兰排名第一的在线旅游超市:Farvater.Travel
2020/01/02 全球购物
说出一些常用的类,包,接口
2014/09/22 面试题
工伤赔偿协议书
2014/04/15 职场文书
关工委先进个人事迹材料
2014/05/23 职场文书
超市理货员岗位职责
2014/07/04 职场文书
2014班子“三严三实”对照检查材料思想汇报
2014/09/18 职场文书