问题
你想去交换一些变量的值,但是你不想使用临时变量。
解决
python的自动元组打包和解包可以做到这点:
a, b, c = b, c, a
a, b, c = b, c, a
讨论
许多程序语言让你使用临时中间变量去交换变量的值。
temp = a
a = b
b = c
c = temp
但是python让你使用tuple的打包和解包来直接赋值
a, b, c = b, c, a
在一个赋值中,python要求等号右边是一个表达式。 这里我们所写的b, c, a的确是表达式。要明确的是,它是一个元组, 有三个元素的不可变的序列。元组经常用圆括号括起来, 象(b, c, a)。 但是在这里除了逗号是有一些其他的意思以外(在一个函数调用中),圆括号不是必须的。通过打包元组的每一项,用逗号来建立一个元组.
在赋值语句的等号的左边,你可以正常的使用单个的对象。 这个对象能够是简单的一个标示符号(也就是众所周知的变量), 一个索引(例如alist[i] 和 adict['freep']), 一个属性的引用(如anobject.someattribute)等等。然而,python也让你在赋值语句的左边,使用几个用逗号分开的对象(变量,索引等等)。 那样的一个多赋值也被称为解包赋值。 当有两个或者更多的逗号分隔开的对象在一个赋值语句的左边, 右边的值必须是一个序列,而且它的数目要和左边逗号分隔的对象一样多。序列的每一项都被从左到右依次赋给相对应的目标值。
在这个配方中(译注:书的名字叫python食谱,所以每一节都称为一个配方:)),
我们有三个逗号分隔的目标对象在左边,所以我们需要右边有三个元素的序列,他们是有三个元素的被打包的元组。第一个目标(变量)得到第一个元素的值(它使用变量b的值), 第二个目标(b)得到第二个元素的值(它使用变量c的值), 并且第三个即最后一个目标(c)得到第三即最后一个元素(使用变量a的值)。 实际结果是一个在变量之间交换的值(你可以想想这个例子细节等价于一个旋转)
元组使用逗号打包,序列通过放置几个逗号分隔的目标到语句的左边来解包。他们都是有用的,简单的,普遍的机制。通过结合他们,你能简单地,优美地,自然地表达任何一组变量之间的值交换
分享到:
相关推荐
1. 首先,使用命令"tar -zxvf /mnt/data/output/python2-bytesize-1.2-1.el7.tar.gz"对压缩包进行解压。这里的"-z"代表使用gzip压缩,"-x"表示解压,"-v"是显示详细信息,"-f"后跟要解压的文件名。 2. 解压完成后,...
今天我们将详细探讨一个特定的RPM软件包:python2-multilib-1.2-2.el7.centos.x86_64.rpm.tar.gz。此包是一个压缩包,包含了多个RPM文件,用于在基于CentOS 7的系统上安装或更新Python 2环境。 首先,压缩包的名称...
资源分类:Python库 所属语言:Python 资源全名:python-ccp-1.2.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
python-devel-2.7.8-1.2.x86_64.rpm
linux下安装samba源码 system-config-samba-1.2.90-1.fc14.src.rpm centos下安装samba可以参考我的博客
标题中的"activation.jar commons-email-1.2.jar mail.jar免费下载"涉及到的是Java邮件处理相关的库文件,这些在Java开发中用于实现电子邮件的发送和处理。让我们逐一解析这三个jar文件: 1. **activation.jar**:...
在"apache-phoenix-4.14.0-HBase-1.2-src.tar.gz"这个压缩包中,我们主要会发现以下几个关键的知识点: 1. **Phoenix架构**:Phoenix采用了分层架构,包括客户端驱动、服务器端元数据服务、以及SQL编译器和执行器。...
《Python库master-sake-1.2:深入解析与应用》 在编程世界里,Python以其简洁、易读的语法和强大的库支持赢得了广大开发者的心。"master-sake-1.2.tar.gz"是一个专为Python开发设计的库,它为用户提供了丰富的功能...
资源分类:Python库 所属语言:Python 资源全名:muser-1.2.1.2-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
基于Python的深度学习框架:CNN-LSTM-Attention模型在时间序列预测中的实现与应用,基于Python的CNN-LSTM-Attention混合模型:时间序列预测的多变量与单变量应用解决方案,基于python语言的CNN—LSTM—Attention模型...
总的来说,Pandas-stubs-1.2.0.43提供了Pandas库的类型注解,为开发者带来了更安全、高效的编程体验。理解并善用这些类型注解,能有效提升数据分析项目的质量和效率,让代码更加健壮,减少错误的发生。
标题中的"python-multilib-conf-1.2-2.el7.centos.x64-86.rpm.tar.gz"指明了这是一个适用于基于Red Hat的系统,如CentOS 7的RPM包,并且该包是为x86_64架构(也称为amd64)设计的。文件中的"noarch"通常表示该包为...
《Python库深度解析:django-endless-pagination-vue-1.2》 在现代Web开发中,数据分页是不可或缺的功能,特别是在处理大量数据时。`django-endless-pagination-vue-1.2` 是一个集成Python的Django框架与前端Vue.js...
Python 编程语言教程 本资源是一个 Python 编程语言的教程,涵盖了 Python 语言的基础知识、安装、基本概念、运算符与表达式、控制流、函数、模块、数据结构、面向对象的编程、输入&输出、异常、Python 标准库等...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
《Python库geoshape-geonode-1.2:地理空间数据处理与后端开发的利器》 在IT行业中,Python作为一种强大的开发语言,因其简洁的语法和丰富的库支持而备受青睐。当我们谈论“geoshape-geonode-1.2.tar.gz”这个资源...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
标题中的“Python库 | crack-engine-CraXell-0.0.1.2.tar.gz”表明这是一个基于Python的库,名为CraXell,版本号为0.0.1.2,它被压缩成一个tar.gz文件。在IT行业中,Python库是开发者用来扩展Python功能的工具集合,...
基于Python的深度学习模型:CNN-GRU-Attention实现多步及单步时间序列预测系统,基于Python语言的CNN-GRU-Attention模型:多变量与单变量时间序列预测的灵活实现,基于python语言的CNN—GRU—Attention模型实现时间...
官方离线安装包,亲测可用