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 实现文件的递归拷贝实现代码
Aug 02 Python
在Python中操作列表之list.extend()方法的使用
May 20 Python
python http接口自动化脚本详解
Jan 02 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
Oct 23 Python
Python Pandas对缺失值的处理方法
Sep 27 Python
使用tensorflow显示pb模型的所有网络结点方式
Jan 23 Python
利用django model save方法对未更改的字段依然进行了保存
Mar 28 Python
基于plt.title无法显示中文的快速解决
May 16 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
Oct 20 Python
java字符串格式化输出实例讲解
Jan 06 Python
详解Python小数据池和代码块缓存机制
Apr 07 Python
Pytorch 中net.train 和 net.eval的使用说明
May 22 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
利用 window_onload 实现select默认选择
2006/10/09 PHP
如何隐藏你的.php文件
2007/01/04 PHP
CodeIgniter常用知识点小结
2016/05/26 PHP
PHP框架自动加载类文件原理详解
2017/06/06 PHP
Javascript的匿名函数小结
2009/12/31 Javascript
基于jquery的图片的切换(以数字的形式)
2011/02/14 Javascript
jQuery EasyUI API 中文文档 - TimeSpinner时间微调器
2011/10/23 Javascript
JS多物体 任意值 链式 缓冲运动
2012/08/10 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
2013/03/21 Javascript
javascript四舍五入函数代码分享(保留后几位)
2013/12/10 Javascript
离开当前页面前使用js判断条件提示是否要离开页面
2014/05/02 Javascript
javascript实现节点(div)名称编辑
2014/12/17 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
简介JavaScript中的getSeconds()方法的使用
2015/06/10 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
2017/04/13 Javascript
JS实现图片预览的两种方式
2017/06/27 Javascript
浅谈如何使用 webpack 优化资源
2017/10/20 Javascript
Angular4 反向代理Details实践
2018/05/30 Javascript
vue.js 实现评价五角星组件的实例代码
2018/08/13 Javascript
vue form check 表单验证的实现代码
2018/12/09 Javascript
聊聊Vue 中 title 的动态修改问题
2019/06/11 Javascript
js实现中文实时时钟
2020/01/15 Javascript
uniapp实现横向滚动选择日期
2020/10/21 Javascript
PHP 502bad gateway原因及解决方案
2020/11/13 Javascript
从零学Python之hello world
2014/05/21 Python
Python爬取当当、京东、亚马逊图书信息代码实例
2017/12/09 Python
如何利用Python分析出微信朋友男女统计图
2019/01/25 Python
python主要用于哪些方向
2020/07/05 Python
芬兰设计商店美国:Finnish Design Shop US
2019/03/25 全球购物
Paradox London官方网站:英国新娘鞋婚礼鞋品牌
2019/08/29 全球购物
物理教师自荐信范文
2013/12/28 职场文书
临床医师专业个人自我评价
2014/01/08 职场文书
Python还能这么玩之只用30行代码从excel提取个人值班表
2021/06/05 Python
python模块与C和C++动态库相互调用实现过程示例
2021/11/02 Python
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
2022/04/09 Javascript