Python에서 두 변수를 바꾸는 방법(임시 변수 없이)

Python에서 두 변수를 바꾸는 방법을 알아보세요. Python 방식의 튜플 패킹 및 언패킹을 이해하고 이를 기존 임시 변수 교환과 비교합니다.

Editor에서 이 솔루션을 사용해 보세요.

개요

두 변수의 값을 교환하는 것은 정렬 알고리즘, 변수 재할당 및 값 회전에 사용되는 일반적인 작업입니다. C, C++ 또는 Java와 같은 하위 수준 프로그래밍 언어에서 교환을 수행하려면 할당 중에 덮어쓰지 않도록 하나의 값을 보유하는 임시 변수를 선언해야 합니다.

Python에서는 임시 저장소를 사용하지 않고 `a, b = b, a`와 같이 한 줄로 이 교체를 수행할 수 있습니다. 이 우아한 접근 방식은 더 깔끔할 뿐만 아니라 고도로 최적화되어 있습니다. 내부적으로 Python은 튜플 패킹 및 언패킹을 사용하여 스왑을 안전하게 수행합니다.

Python이 `a, b = b, a`를 평가할 때 먼저 메모리에 `(b, a)` 값을 포함하는 튜플을 만듭니다(튜플 패킹). 그런 다음 해당 튜플을 다시 왼쪽에 있는 변수로 압축을 풀어 `b`의 이전 값을 `a`에 할당하고 `a`의 이전 값을 `b`에 할당합니다(튜플 압축 풀기). 이는 데이터 충돌 없이 두 변수가 동시에 업데이트된다는 것을 보장합니다.

코드 및 실행 출력

이 코드는 튜플 압축 풀기를 사용하여 Python에서 두 변수를 교환하는 방법을 보여주고 이를 기존 임시 변수 방법과 비교합니다.

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}")
터미널 출력
Original: x = 10, y = 20
Pythonic Swap: x = 20, y = 10
Traditional Swap: x = 10, y = 20

단계별 구현

  • 할당의 왼쪽에 값을 받고 싶은 변수(variable1, Variable2)를 배치합니다.
  • 소스 값을 포함하는 변수(variable2, Variable1)를 오른쪽에 배치합니다.
  • 할당 연산자(=)를 사용하여 Python의 자동화된 튜플 패킹 및 언패킹 스왑을 트리거합니다.

자주 묻는 질문

튜플 압축 풀기 스왑은 경쟁 조건으로부터 안전한가요?

단일 스레드 환경에서는 왼쪽 변수에 대한 할당이 시작되기 전에 오른쪽 표현식이 튜플로 완전히 평가되므로 완전히 원자적입니다.

두 개 이상의 변수를 동시에 바꿀 수 있나요?

예! 동일한 튜플 구문을 사용하여 원하는 만큼의 변수를 바꿀 수 있습니다. 예를 들어, a, b, c = b, c, a는 값을 왼쪽으로 이동합니다.

관련 주제

권장 Python 리소스

관련 대화형 튜토리얼, 치트 시트, 코드 비교를 통해 지식을 확장하세요.