Python的两数交换真有门道。为啥这道题常出现在编程入门?因为像冒泡排序、传参甚至函数调用里,它是个常见的小技巧。掌握它的不同写法,不仅能帮你更好地理解变量、内存这些底层概念,关键时刻还能在面试或笔试中写出让人眼前一亮的代码。 最传统的做法就是引入一个临时变量,这就好比教科书里的标准答案,过程清晰,逻辑也简单,几乎没啥坑能跳进去。 但Python这门语言就有意思了,它的“引用计数+垃圾回收”机制让小对象懒得创建。所以可以用元组解包直接实现原地交换,代码简洁得很。 除了这招,还可以用加法来玩玩看。这思路就是先把两个数加起来,再各自减掉另一个数的原始值。虽然听起来有点像数字捉迷藏,但效果确实很神奇。 不过得注意几点:加法法主要适用于整数或浮点数,字符串和列表那种类型用加法会出岔子;数值得是可逆的,太大太小或负数都容易溢出;还有多线程的话得小心锁问题。 把交换玩成“思维体操”挺有意思的。从三行临时变量到一行元组解包,再到加法这种花式操作,两数交换的写法多得很。下次碰到要交换的场景时,不妨多问问自己:有没有更省事、更简洁的办法?