所以,我的一个朋友问我的 python 编程是怎么来的;我说我学到了很多东西,而且进展顺利。然后我的朋友,一个数学势利小人,问我:
“你可以在不使用第三个变量作为临时占位符的情况下交换 2 个变量的值吗?”
原文由 todd_dsm 发布,翻译遵循 CC BY-SA 4.0 许可协议
所以,我的一个朋友问我的 python 编程是怎么来的;我说我学到了很多东西,而且进展顺利。然后我的朋友,一个数学势利小人,问我:
“你可以在不使用第三个变量作为临时占位符的情况下交换 2 个变量的值吗?”
原文由 todd_dsm 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答869 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
在 Python 中交换两个变量的规范方法是
请注意,无论
a
或b
的“类型”是(数字、字符串、元组、对象…),这都是有效的。当然,如果两个变量都引用不同类型的值,它也可以工作。与许多命令式语言一样,Python 从右到左计算赋值。 _从概念上讲_,所有的行为 就像 为表达式的右手部分构建一个元组,然后 解构 以对左手部分执行矫揉造作。这已经比我在这里解释得更清楚了: https ://stackoverflow.com/a/14836456/2363712
不过,真正的细节取决于实现。例如,基于 @undefined 的评论不是下面的函数,CPython 虚拟机有一个 ROT_TWO 操作码交换堆栈上的两个顶级项目,因此允许优化这种影响。有关详细说明,请参阅之前的答案: https ://stackoverflow.com/a/21047622/2363712