Jak zamienić dwie zmienne w Pythonie (bez zmiennych tymczasowych)

Dowiedz się, jak zamienić dwie zmienne w Pythonie. Zrozum pakowanie i rozpakowywanie krotek w języku Python i porównaj je z tradycyjną zamianą zmiennych tymczasowych.

Wypróbuj to rozwiązanie w Edytorze

Przegląd

Zamiana wartości dwóch zmiennych to klasyczna operacja stosowana w algorytmach sortowania, ponownym przypisywaniu zmiennych i rotacji wartości. W językach programowania niższego poziomu, takich jak C, C++ lub Java, zamiana wymaga zadeklarowania zmiennej tymczasowej przechowującej jedną wartość, aby nie została nadpisana podczas przypisywania.

W Pythonie możesz dokonać tej zamiany w jednym wierszu, bez użycia tymczasowej pamięci: `a, b = b, a`. To eleganckie podejście jest nie tylko czystsze, ale także wysoce zoptymalizowane. Pod maską Python używa pakowania i rozpakowywania krotek, aby bezpiecznie przeprowadzić zamianę.

Kiedy Python ocenia `a, b = b, a`, najpierw buduje krotkę zawierającą wartości `(b, a)` w pamięci (pakowanie krotek). Następnie rozpakowuje tę krotkę z powrotem do zmiennych po lewej stronie, przypisując starą wartość `b` do `a`, a starą wartość `a` do `b` (rozpakowywanie krotki). Gwarantuje to jednoczesną aktualizację obu zmiennych bez kolizji danych.

Dane wyjściowe kodu i wykonania

Ten kod demonstruje zamianę dwóch zmiennych w Pythonie przy użyciu rozpakowywania krotek i porównuje ją z tradycyjną metodą zmiennej temp.

swap_variables.py
Spróbuj w Edytorze
x = 10
y = 20
print(f"Original: x = {x}, y = {y}")

# 1. The Pythonic Way (Tuple unpacking)
x, y = y, x
print(f"Pythonic Swap: x = {x}, y = {y}")

# 2. The Traditional Way (Using a temporary variable)
temp = x
x = y
y = temp
print(f"Traditional Swap: x = {x}, y = {y}")
Wyjście terminala
Original: x = 10, y = 20
Pythonic Swap: x = 20, y = 10
Traditional Swap: x = 10, y = 20

Wdrażanie krok po kroku

  • Po lewej stronie przypisania umieść zmienne, którym chcesz nadać wartości: zmienna1, zmienna2.
  • Po prawej stronie umieść zmienne zawierające wartości źródłowe: zmienna2, zmienna1.
  • Użyj operatora przypisania (=), aby uruchomić automatyczną zamianę pakowania i rozpakowywania krotek w Pythonie.

Często zadawane pytania

Czy zamiana rozpakowania krotki jest bezpieczna przed warunkami wyścigu?

W środowisku jednowątkowym jest to całkowicie niepodzielne, ponieważ wyrażenie po prawej stronie jest w pełni oceniane jako krotka przed rozpoczęciem przypisań do zmiennych po lewej stronie.

Czy mogę zamienić więcej niż dwie zmienne jednocześnie?

Tak! Możesz zamienić dowolną liczbę zmiennych, używając tej samej składni krotki. Na przykład a, b, c = b, c, a przesuwa wartości w lewo.

Powiązane tematy

Polecane zasoby Pythona

Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.