元组拆包可以应用到任何迭代对象上, 唯一的要求是, 被可迭代对象中的元素数量必须要和这些元素的元组的空档数一致, 除非我们用* 来表示忽略多余的元素。


1. 最好辨认的元组拆包形式就是平行赋值, 也就是把一个可迭代对象里的元素, 一起赋值到由对应的变量组成的元组中。

平行赋值就像是这样:

lax_coordinates = (33.9425, -118.408056)

latitude, longitude = lax_coordinates #元组拆包

>>> latitude

   33.9425

>>> longitude

   -118.408056

 
另一种很优雅的写法不使用中间变量交换两个变量的值:

>>> b, a = a, b


还可以用 * 运算符把一个可迭代的对象拆开作为函数的参数:

>>> divmod(20, 8)

 (2, 4)

>>>t = (20, 8)

>>> divmod(*t)

 (2, 4)   

>>> quotient, remainder = divmod(*t)

>>> quotient, remainder

(2, 4)   

2.下面是一个例子, 这里的元组拆包用法则是让一个函数可以用元组的形式返回多个值, 然后调用函数代码就能轻松地接受这些返回值。比如os.path.split()函数就会返回以路径和最后一个文件组成的元组(path,last_part):

>>> import os

>>> _, filename = os.path.split('/home/luciano/.ssh/idrsa.pub')

>>> filename'idrsa.pub'

在进行拆包的时候,我们对不感兴趣的数据可以用 _占位符处理,上面的例子也是这个用法, 但是如果是国际化软件, 那么_可能就不是一个占位符,因为这个也是gettext.gettext函数的常用别名,gettext模块的文档里就提到这一点。


3.用*来处理剩下的元素

在python中, 函数用*args 来获取不确定数量的参数是一种经典写法,在python3中,这个概念被扩展到了平行赋值中:

>>> a, b, *c = range(5)

>>> a, b, c(0, 1, [2, 3, 4])

>>> a, b, *c = range(3)

>>> a, b, c(0, 1, [2])

在平行赋值中, *前缀只能在一个变量名前面, 但是这个变量可以出现在赋值表达式的任意位置。

转载于:https://www.cnblogs.com/arthurlzyw/p/7744805.html

Python 元组拆包相关推荐

  1. python 元组拆包_Python元组拆包和具名元组解析实例详解

    前言 在Python中元组是一个相较于其他语言比较特别的一个内置序列类型.有些python入门教程把元组成为"不可变的列表",这种说法是不完备的,其并没有完整的概括元组的特点.除了 ...

  2. python元组拆包

    来源<利用python进行数据分析>P55-57 如果想要将元组类型的表达式赋值给变量,python会对等号右边的值进行拆包 tup = (4, 5, 6) a, b, c = tup # ...

  3. python中元组拆包_Python 元组拆包和具名元组解析

    Python 元组拆包和具名元组解析 前言 在 Python 中元组是一个相较于其他语言比较特别的一个内置序列类型有些 python 入门教程把元组成为不可变的列表, 这种说法是不完备的, 其并没有完 ...

  4. python中元组拆包_Python3基础:元组拆包

    关注微信公众号"酸痛鱼",获得更多最新最全的文章. 建议您在PC浏览器中阅读本文,以获得更好的阅读体验. 建议您抄写并运行本文中的例子的所有代码,并尝试对代码按照自己的理解进行适当 ...

  5. python元组元素的提取_Python 元组拆包

    元组拆包可以应用到任何迭代对象上, 唯一的要求是, 被可迭代对象中的元素数量必须要和这些元素的元组的空档数一致, 除非我们用* 来表示忽略多余的元素. 1. 最好辨认的元组拆包形式就是平行赋值, 也就 ...

  6. python列表嵌套元组拆分_Python进阶之元组拆包及嵌套元组拆包

    1.元组拆包 元组拆包也叫可迭代元素拆包 元组拆包的基本用法: >>> lax_coordinates = (33.9425, -118.408056) >>> l ...

  7. 熟练掌握python是什么概念-想要熟练掌握Python元组?你需要了解这10件应知事项...

    本文转载自公众号"读芯术"(ID:AI_Discovery) 人生苦短,Python是岸. 作为一种通用编程语言,Python已成为各学术和工业领域中最流行的语言之一. 此前,IE ...

  8. python元组_Python 元组和分片

    这一篇是 <流畅的 python> 读书笔记.主要介绍元组.分片.序列赋值以及引用了大师 Edsger W.Dijkstra 为什么序列从0开始计数 的解释. 元组 在有些python 的 ...

  9. python元组(tuple)使用示例+常用方法+列表(list)和元组(tuple)的异同?

    python元组(tuple)使用示例+常用方法+列表(list)和元组(tuple)的异同? 元组(tuple) # 元组类似列表,元组里面的元素也是进行索引计算. # 列表里面的元素的值可以修改, ...

最新文章

  1. client-go使用实例
  2. [Machine Learning]--无监督学习
  3. 行代码入门python_新浪微博Android客户端开发视频教程(36讲)
  4. Redux其实很简单(原理篇)
  5. 推荐系统遇到曝光偏差怎么办?用对比学习!
  6. 如何将h5网页改成微信网页
  7. 微服务升级_SpringCloud Alibaba工作笔记0003---理解spring webflux_响应式堆栈_提高微服务吞吐量和伸缩性
  8. C++认识容器的迭代器
  9. 在 Mac 上如何使用 iCloud 钥匙串保护信息安全?
  10. shop++ jtm2.5最新版本发布
  11. java简历编写及面试技巧
  12. 保研之路——上交大电子系直博
  13. win10如何调整计算机时间同步,win10电脑时间与Internet同步的设置方法
  14. VScode远程root权限调试
  15. 在UE5中创建一个受战锤启发的角色
  16. Github搜索开源项目过滤技巧
  17. Mysql 安装,及其闪退的问题解决
  18. 英语词根记忆法(5)
  19. 解密!高德地图九大绝密卷宗带你畅游上海迪士尼
  20. 鸿蒙OS与安卓、Fuchsia 对比分析

热门文章

  1. .net连接mysql中文乱码问题的解决
  2. 4 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之Lvs为Mysql-slave做负载均衡
  3. 无锁队列以及ABA问题
  4. border-radius 移动之伤
  5. 怎样定义函数,调用函数
  6. 在装完Linux系统之后自己去修改Swap分区的大小(两种方法)
  7. 怎么删除用户_误删的手机照片怎么恢复?三种快速恢复的方法
  8. 在用ganglia时出现You don‘t have permission to access ganglia on this server
  9. 负载均衡和故障转移的使用案例
  10. 大数据可视化技术挑战和措施