스택큐힙리스트

파이썬에서 두 변수를 교환하는 표준화된 방법이 있나요? 본문

카테고리 없음

파이썬에서 두 변수를 교환하는 표준화된 방법이 있나요?

스택큐힙리스트 2023. 4. 1. 14:26
반응형

파이썬에서는 이 구문을 사용하여 두 변수의 값을 교환하는 것을 본 적이 있습니다.

left, right = right, left

이것은 두 변수 값을 교환하는 표준 방법으로 간주되는 것인가요? 아니면 교환하기 가장 흔히 사용되는 관례적 방법이 있나요?

답변 1

파이썬은 왼쪽에서 오른쪽으로 식을 평가합니다. 할당을 평가할 때, 왼쪽 항보다 오른쪽 항이 먼저 평가됩니다.

Python docs: Evaluation order

그것은 다음과 같은 의미입니다. a,b = b,a

오른쪽 측면 b,a 은 평가되며, 즉, 두 개의 요소가 메모리에 생성되는 튜플을 만듭니다. 이 두 요소는 프로그램 실행 중 명령어를 만나기 전에 이미 존재하던 식별자 b 와 a 에 의해 지정된 객체입니다.

이 튜플을 생성한 직후에는 아직이 튜플 객체의 할당이 이루어지지 않았지만, Python 내부적으로 그것이 어디에 있는지 알고 있습니다.

그럼 왼쪽에 있는 것을 계산하고, 즉 튜플이 왼쪽에 할당됩니다.

왼쪽 항은 두 개의 식별자로 구성되어 있기 때문에 첫 번째 식별자 a 가 튜플의 첫 번째 요소 (전에 이름이 b!@ 였던 객체 b 로 스왑하기 전의 객체)에 할당되도록 튜플을 언팩합니다. 그리고 두 번째 식별자 b!@ 는 튜플의 두 번째 요소 (전에 식별자가 a 였던 객체 a)에 할당됩니다.

이 메커니즘은 실제로 식별자 a와 b에 할당된 객체를 교환했습니다.

그러니까, 답변을 해보면: 네, 두 개체의 두 식별자를 교환하는 것은 표준적인 방법입니다.

그리고, 객체는 변수가 아니라 개체입니다.

답변 2

파이썬에서 두 변수를 바꾸는 표준 방법이 있을까요?

파이썬은 대부분의 다른 프로그래밍 언어와 마찬가지로 변수를 사용합니다. 변수는 값을 할당하고 이를 필요로 하는 코드에서 사용됩니다. 때로는 두 변수의 값을 교환해야하는 경우가 있는데, 이를 수행하는 가장 일반적인 방법에 대해 알아보겠습니다.

가장 기본적인 방법은 간단한 변수 교환입니다. 이 경우 두 변수를 저장하는 임시 변수가 필요합니다. 교환하는 코드는 다음과 같습니다.

temp = x

x = y

y = temp

하지만 이 방법은 두 변수 사이에 많은 메모리를 사용하므로 더 나은 방법이 있습니다. 두 번째 방법은 동시할당 연산자를 사용하는 것입니다. 이 방법은 파이썬에서 특히 유용합니다.

x, y = y, x

이 방법은 튜플 패킹과 언패킹을 기반으로 합니다. y와 x를 튜플로 묶고, 다시 x와 y 변수에 언패킹하여 값들이 서로 바뀌게 됩니다. 이 방법은 매우 간결하며 가독성이 좋습니다.

마지막으로, Xor 방법이라는 방법도 있습니다. 이 방법은 다음과 같습니다.

x ^= y

y ^= x

x ^= y

이 방법은 임시 변수를 사용하지 않으며 두 변수에 대한 값을 중첩하여 XOR 수행합니다.하지만 이 방법은 코드 가독성이 좋지 않고 다른 개발자들에게 잘 이해되지 않을 수 있습니다.

결과적으로, 파이썬에서 두 변수를 바꾸는 가장 일반적인 방법은 동시할당 연산자를 사용하는 것입니다. 그러나 상황에 따라서는 다른 두 변수 교환 방법을 사용하는 것이 더 좋을 수도 있습니다.

반응형
Comments