Python에서 변수의 값을 교환하는 것, 즉 'swap'에 대해 알아보았습니다.
Python에서는 다른 프로그래밍 언어와는 다르게 매우 간단하고 직관적인 방법으로 두 변수의 값을 교환할 수 있습니다. 이는 Python의 튜플 할당 기능을 이용합니다.
기본적인 Swap 방법
두 변수 a와 b가 있다고 가정해 보겠습니다. a에는 값 10이, b에는 값 20이 저장되어 있다고 합시다. 이 두 변수의 값을 교환하고 싶을 때, Python에서는 다음과 같이 간단하게 할 수 있습니다.
a = 10
b = 20
# a와 b의 값을 교환
a, b = b, a
print("a:", a) # a: 20
print("b:", b) # b: 10
여기서 a, b = b, a는 사실상 튜플을 사용한 것입니다. Python은 이 문장을 a, b = (20, 10)으로 해석하고, 각각의 값을 좌변의 변수에 할당합니다.
여러 변수의 값 교환
Python에서는 두 변수뿐만 아니라 여러 변수의 값을 동시에 교환할 수도 있습니다.
x = 1
y = 2
z = 3
# x, y, z의 값을 순서대로 교환
x, y, z = z, x, y
print("x:", x) # x: 3
print("y:", y) # y: 1
print("z:", z) # z: 2
이처럼 Python에서는 매우 직관적이고 간단하게 여러 변수의 값을 동시에 교환할 수 있습니다. 이 기능은 코드를 더 깔누르고 이해하기 쉽게 만들어 줍니다.
주의사항
변수의 값을 교환할 때 추가적인 메모리를 사용하지 않고 직접 교환되기 때문에, 매우 효율적입니다. 하지만, 이러한 방법은 Python에만 한정된 특징이므로, 다른 프로그래밍 언어에서는 이와 같은 방식을 사용할 수 없는 경우가 많습니다. 다른 언어에서는 임시 변수를 사용하는 방법 등을 활용해야 합니다.
Python에서 변수의 값을 교환하는 방법으로 swap 대해 알아보았으며, Python의 간결함과 편리함을 잘 보여주는 예시 중 하나라고 할 수 있습니다.
인덱스를 사용한 Swap
리스트에서 두 요소의 값을 교환하려면, 각 요소의 인덱스를 알아야 합니다. 예를 들어, list_example이라는 리스트에서 i번째 요소와 j번째 요소의 값을 교환하려면 다음과 같이 할 수 있습니다.
list_example = [1, 2, 3, 4, 5]
# i번째와 j번째 요소 교환
i = 1
j = 3
list_example[i], list_example[j] = list_example[j], list_example[i]
print(list_example) # [1, 4, 3, 2, 5]
여기서 i = 1과 j = 3은 각각 두 번째와 네 번째 요소를 가리킵니다. Python에서 리스트의 인덱스는 0부터 시작한다는 것을 기억해야 합니다. 따라서 위 코드는 리스트의 두 번째와 네 번째 요소의 위치를 서로 바꿉니다.
슬라이싱을 이용한 다수 요소의 교환
만약 리스트의 연속된 여러 요소들을 다른 위치의 요소들과 교환하고 싶다면, 슬라이싱을 활용할 수 있습니다. 하지만, 이 경우 교환하려는 두 부분의 길이가 같아야 합니다.
list_example = [1, 2, 3, 4, 5, 6, 7, 8]
# 처음 세 요소와 마지막 세 요소 교환
list_example[:3], list_example[-3:] = list_example[-3:], list_example[:3]
print(list_example) # [6, 7, 8, 4, 5, 1, 2, 3]
이 예제에서는 리스트의 처음 세 요소와 마지막 세 요소의 위치를 서로 교환합니다. 슬라이싱을 사용해 교환하려는 요소의 범위를 지정하고, 간단하게 값을 교환할 수 있습니다.
주의사항
리스트의 요소를 교환할 때는 인덱스가 리스트의 범위 내에 있는지 확인해야 합니다. 인덱스가 리스트의 범위를 벗어나면 IndexError가 발생합니다. 따라서 코드를 작성할 때는 리스트의 길이를 고려하여 인덱스가 유효한지 확인하는 것이 좋습니다.
참고자료
[1] 프로그래머스 스쿨 - 파이썬을 파이썬답게 - 두 변수의 값 바꾸기 - swap https://school.programmers.co.kr/learn/courses/4008/lessons/12736
[2] seulgi.kim - Python은 어떻게 swap하는가 - 슭의 개발 블로그
https://blog.seulgi.kim/2017/01/python-swap.html
[3] TISTORY - [ Python ] 파이썬 교환정렬 코드 | 파이썬에서 swap 하기
https://ffoorreeuunn.tistory.com/121
[4] GitHub - [파이썬] 3주차 : 함수
https://blackinkgj.github.io/python-lecture-3/
[5] 티스토리 - [python] List 두 인자 위치 변경하기(스와프, swap) - 식뮬레이션
https://sikmulation.tistory.com/86
[6] 티스토리 - [Python/파이썬] 리스트의 두 요소 위치 변경하기 (스와프,swap)
https://growingarchive.tistory.com/146
[7] TISTORY - 파이썬 리스트 내에서 자료 스왑하기
[8] 티스토리 - 파이썬 리스트 List 스왑 swap - 나의 첫 기술 블로그 함께 기록해요
https://hi-datalab.tistory.com/63
'공부 > Python' 카테고리의 다른 글
[Python] 컴프리헨션(comprehension) (0) | 2024.05.10 |
---|---|
[Python] all() 함수 (0) | 2024.05.10 |
[Python] for-else while-else (0) | 2024.04.16 |
[점프 투 파이썬 ] 05장 클래스, 모듈 패키지, 예외처리, 내장함수, 라이브러리 (0) | 2023.04.09 |
[점프 투 파이썬 ] 04장 입력과 출력 (0) | 2023.04.09 |