在不使用第三个变量的情况下交换 2 个变量的 2 个值; Python

新手上路,请多包涵

所以,我的一个朋友问我的 python 编程是怎么来的;我说我学到了很多东西,而且进展顺利。然后我的朋友,一个数学势利小人,问我:

“你可以在不使用第三个变量作为临时占位符的情况下交换 2 个变量的值吗?”

原文由 todd_dsm 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 404
1 个回答

在 Python 中交换两个变量的规范方法是

a, b = b, a

请注意,无论 ab 的“类型”是(数字、字符串、元组、对象…),这都是有效的。当然,如果两个变量都引用不同类型的值,它也可以工作。


与许多命令式语言一样,Python 从右到左计算赋值。 _从概念上讲_,所有的行为 就像 为表达式的右手部分构建一个元组,然后 解构 以对左手部分执行矫揉造作。这已经比我在这里解释得更清楚了: https ://stackoverflow.com/a/14836456/2363712

不过,真正的细节取决于实现。例如,基于 @undefined 的评论不是下面的函数,CPython 虚拟机有一个 ROT_TWO 操作码交换堆栈上的两个顶级项目,因此允许优化这种影响。有关详细说明,请参阅之前的答案: https ://stackoverflow.com/a/21047622/2363712

原文由 Sylvain Leroux 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题