Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Hoán đổi 2 biến trong 1 dòng Python (Swap variables)

Python cho phép hoán đổi (swap) hai biến trong một câu lệnh nhờ tuple packing/unpacking.

Cú pháp chuẩn

a, b = b, a

Ví dụ

a = 20
b = 30
print(f"Before: a={a}, b={b}")  # Before: a=20, b=30

a, b = b, a

print(f"After: a={a}, b={b}")   # After: a=30, b=20

Cơ chế hoạt động (Tuple Packing/Unpacking)

  1. Right-hand side (RHS) evaluated first: b, a tạo tuple (30, 20) trong bộ nhớ.
  2. Tuple được unpack gán vào left-hand side (LHS) theo thứ tự: a nhận phần tử 0, b nhận phần tử 1.
  3. Xảy ra cùng lúc (atomic), không cần biến tạm.

Mở rộng: Hoán đổi nhiều biến

a, b, c = 1, 2, 3
a, b, c = c, a, b  # Rotate right
print(a, b, c)     # 3 1 2

# Hoán đổi 4 biến
a, b, c, d = 1, 2, 3, 4
a, b, c, d = d, c, b, a  # Reverse
print(a, b, c, d)  # 4 3 2 1

So sánh với ngôn ngữ khác

Ngôn ngữCách swap
Pythona, b = b, a
C/C++int tmp=a; a=b; b=tmp; hoặc std::swap(a,b)
Javaint tmp=a; a=b; b=tmp;
JavaScript[a, b] = [b, a] (ES6 destructuring)
Goa, b = b, a

Lưu ý

  • RHS luôn được đánh giá trước LHS (theo spec Python).
  • Không dùng được cho a[i], a[j] = a[j], a[i] nếu i == j (vẫn an toàn, nhưng vô nghĩa).
  • Với object phức tạp: swap reference, không copy object.