问题
你想去交换一些变量的值,但是你不想使用临时变量。
解决
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的值)。 实际结果是一个在变量之间交换的值(你可以想想这个例子细节等价于一个旋转)
元组使用逗号打包,序列通过放置几个逗号分隔的目标到语句的左边来解包。他们都是有用的,简单的,普遍的机制。通过结合他们,你能简单地,优美地,自然地表达任何一组变量之间的值交换
分享到:
相关推荐
python-devel-2.7.8-1.2.x86_64.rpm
标题中的"activation.jar commons-email-1.2.jar mail.jar免费下载"涉及到的是Java邮件处理相关的库文件,这些在Java开发中用于实现电子邮件的发送和处理。让我们逐一解析这三个jar文件: 1. **activation.jar**:...
linux下安装samba源码 system-config-samba-1.2.90-1.fc14.src.rpm centos下安装samba可以参考我的博客
资源分类:Python库 所属语言:Python 资源全名:django-oscar-1.2rc1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源分类:Python库 所属语言:Python 资源全名:muser-1.2.1.2-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
总的来说,Pandas-stubs-1.2.0.43提供了Pandas库的类型注解,为开发者带来了更安全、高效的编程体验。理解并善用这些类型注解,能有效提升数据分析项目的质量和效率,让代码更加健壮,减少错误的发生。
《Python库Simba-UW-tf-1.2.3.4详解》 在Python的世界里,库扮演着至关重要的角色,它们为开发者提供了丰富的功能和便利,大大提高了开发效率。今天我们要探讨的是名为"Simba-UW-tf"的一个特定版本——1.2.3.4的库...
《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完整包名] 进行安装
总结来说,`jenkins-yml-1.2.tar.gz`是一个与Jenkins相关的Python库,它可能包含了用于配置和控制Jenkins作业的YAML文件以及Python代码。通过这个库,开发者能够更加便捷地在Python环境中管理和操作Jenkins,提升CI/...
《Python库aa-opcalendar-1.2.52:打造高效日历管理》 Python作为一门强大且广泛应用的编程语言,拥有丰富的第三方库资源,其中aa-opcalendar是为日历管理设计的一个高效库,版本号1.2.52。这个库主要针对后端开发...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
标题中的“Python库 | crack-engine-CraXell-0.0.1.2.tar.gz”表明这是一个基于Python的库,名为CraXell,版本号为0.0.1.2,它被压缩成一个tar.gz文件。在IT行业中,Python库是开发者用来扩展Python功能的工具集合,...
官方离线安装包,亲测可用
在Linux环境下,我们通常使用“tar -zxvf ctower-env-1.2-RELEASE.tar.gz”命令来解压这个文件。解压后,会得到一个名为“ctower-env-1.2”的目录,其中包含ctower-env的所有组成部分。 安装过程中,我们需要注意...
总的来说,Pandas-stubs-1.2.0.9是Pandas库的静态类型定义,它为Python开发者提供了一种更严谨、更高效的编程方式,通过利用类型注解,可以在开发早期发现潜在的类型错误,提升代码质量,降低维护成本。对于大型项目...
《Python库深度解析:astropy-helpers-1.2rc1》 在Python的世界里,库扮演着至关重要的角色,它们极大地扩展了Python的功能,使得开发者可以高效地处理各种复杂任务。今天我们要深入探讨的是一份名为“astropy-...
4. 使用`pip`(Python的包管理器)来安装这个库,命令通常是`pip install pysha-0.0.1.2-py3-none-any.whl`。 5. 安装完成后,你可以在Python脚本中通过`import pysha`来使用它提供的功能。 **Python库的管理和版本...
python库。资源全名:django-ui-widgets-1.2b0.tar.gz