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

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

最佳答案

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

a, b = b, a

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

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

不过,真正的细节取决于实现。例如,为了构建下面 @undefined is not a function 的评论,CPython 虚拟机有一个 ROT_TWO 操作码,用于交换堆栈上的两个顶级项目,因此可以优化这种影响。有关详细说明,请参阅上一个答案:https://stackoverflow.com/a/21047622/2363712

关于python - 在不使用第三个变量的情况下交换 2 个变量的 2 个值; Python,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24844487/

10-12 20:04