Python中如何根据条件优雅交换变量值(无需临时变量)
无需临时变量的变量交换优雅实现方案
已知a=5且b=6,当a < b时需要交换二者的值。目前我可通过创建临时变量实现,代码如下:
if a < b: a_temp = b b_temp = a a = a_temp b = b_temp请问是否存在无需创建临时变量的优雅实现方式?
首选方案:Python 元组解包交换
这是Python里最简洁、可读性最高的写法,完全不需要临时变量:
if a < b: a, b = b, a
Python会自动将右侧的b, a打包成元组,再解包赋值给左侧的a, b,底层处理不需要手动声明临时变量,逻辑清晰还一行搞定。
补充:其他语言常用的算术交换(Python不推荐)
如果是在不支持解包的语言里,可利用算术运算实现,但Python里完全没必要用这种写法(可读性差,仅适用于数值类型):
if a < b: a = a + b b = a - b a = a - b
⚠️ 注意:这种方法存在溢出风险(Python的int无溢出,但其他语言可能有),且如果变量不是数值类型就完全失效。
顺便修正你原代码的bug
你当前的临时变量写法有问题:当a >= b时,a_temp和b_temp未被定义,执行后面的a = a_temp会直接报错。正确的临时变量写法应该把赋值逻辑都放到if块内:
if a < b: temp = a a = b b = temp
内容的提问来源于stack exchange,提问作者Lopez
相关产品推荐
相关产品推荐

