일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 파이썬
- 컴퓨터공학
- I'm Sorry
- 소프트웨어
- 클라우드컴퓨팅
- 데이터과학
- 데이터분석
- 데이터구조
- 사이버보안
- 인공지능
- Yes
- 머신러닝
- 보안
- 컴퓨터과학
- 네트워크보안
- 웹개발
- 코딩
- 프로그래밍
- 자바스크립트
- 컴퓨터비전
- 소프트웨어공학
- 네트워크
- 빅데이터
- 딥러닝
- 자료구조
- 프로그래밍언어
- 알고리즘
- 버전관리
- 2
- 데이터베이스
- Today
- Total
스택큐힙리스트
파이썬에서 두 변수를 교환하는 표준화된 방법이 있나요? 본문
파이썬에서는 이 구문을 사용하여 두 변수의 값을 교환하는 것을 본 적이 있습니다.
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 수행합니다.하지만 이 방법은 코드 가독성이 좋지 않고 다른 개발자들에게 잘 이해되지 않을 수 있습니다.
결과적으로, 파이썬에서 두 변수를 바꾸는 가장 일반적인 방법은 동시할당 연산자를 사용하는 것입니다. 그러나 상황에 따라서는 다른 두 변수 교환 방법을 사용하는 것이 더 좋을 수도 있습니다.