当前位置:首页>python>Python 变量交换值的 N 种写法,你都会吗?

Python 变量交换值的 N 种写法,你都会吗?

  • 2026-09-10 15:50:38
Python 变量交换值的 N 种写法,你都会吗?

从基础到高阶,一篇文章讲透 Python 的「值交换」艺术


一、最经典的写法:临时变量法

这是所有编程语言通用的方法,直观好理解:

a=10
b=20

# 使用临时变量 temp
temp=a
a=b
b=temp

print(f"a = {a}, b = {b}")  # 输出: a = 20, b = 10

✅ 优点:逻辑清晰,几乎所有语言都支持❌ 缺点:需要额外内存空间,代码稍冗长


二、Pythonic 写法:元组解包 ⭐推荐

这是 Python 独有的优雅写法,一行代码搞定:

a=10
b=20

# Python 特色:元组解包交换
a, b=b, a

print(f"a = {a}, b = {b}")  # 输出: a = 20, b = 10

🔍 原理揭秘:

  1. 右边 b, a 先被打包成一个元组(20, 10)

  2. 左边 a, b 再解包赋值,分别拿到对应值

✅ 优点:简洁优雅,无需临时变量,是 Python 的惯用写法


三、数学运算交换法(面试常考)

不用临时变量,只用加减法或异或运算:

方法 A:加减法

a=10
b=20

a=a+b# a = 30
b=a-b# b = 10
a=a-b# a = 20

print(f"a = {a}, b = {b}")

⚠️ 注意:存在整数溢出风险(其他语言),Python 中整数无限精度,相对安全,但仍不推荐日常使用。

方法 B:异或运算(仅整数)

a=10# 二进制 1010
b=20# 二进制 10100

a=a^b
b=a^b
a=a^b

print(f"a = {a}, b = {b}")  # 成功交换

✅ 优点:无需额外空间,炫技专用❌ 缺点:可读性差,仅限整数,Python 中没必要用


四、多变量同时交换

Python 的元组解包还能玩更花的,多个变量一键轮换:

# 三个变量轮换:a→b, b→c, c→a
a, b, c=1, 2, 3
a, b, c=b, c, a

print(a, b, c)  # 输出: 2 3 1

# 甚至更多...
x, y, z, w=1, 2, 3, 4
x, y, z, w=y, z, w, x# 集体左移轮换

五、实际应用场景

场景 1:列表元素交换(冒泡排序核心)

nums= [3, 1, 4, 1, 5]

# 交换索引 0 和 1 的元素
nums[0], nums[1] =nums[1], nums[0]
print(nums)  # [1, 3, 4, 1, 5]

场景 2:函数多返回值接收

defget_min_max(numbers):
returnmin(numbers), max(numbers)

min_val, max_val=get_min_max([3, 1, 4, 1, 5])
# 直接解包到两个变量,无需中间步骤

六、对比总结表

方法代码行数可读性适用场景推荐指数
临时变量3 行⭐⭐⭐所有语言通用⭐⭐⭐
元组解包1 行⭐⭐⭐⭐⭐Python 首选⭐⭐⭐⭐⭐
加减法3 行⭐⭐面试炫技⭐⭐
异或运算3 行⭐整数专用⭐

七、记住这个口诀 🎯

「临时变量最通用,元组解包最 Python」

日常写代码,直接用 a, b = b, a 就对了!既简洁又专业,一看就知道是老 Pythoner 了。


💬 互动话题:你还知道哪些交换变量的奇技淫巧?欢迎在评论区分享!


本文适合收藏转发,方便随时查阅~

最新文章

随机文章