공부/Python

[Python] swap

순제로 2024. 4. 17. 12:50
728x90

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

[2] seulgi.kim - Python은 어떻게 swap하는가 - 슭의 개발 블로그

https://blog.seulgi.kim/2017/01/python-swap.html

 

Python은 어떻게 swap하는가

Python은 버추얼 머신의 구현을 스펙으로 명시하지 않았다. 다만 CPython의 구현을 de-facto 표준으로 삼고 있다. CPython의 mental model은 스택머신이다. 따라서 Lua와 다르게 레지스터에 대한 개념이 없다.

blog.seulgi.kim

 

[3] TISTORY - [ Python ] 파이썬 교환정렬 코드 | 파이썬에서 swap 하기

https://ffoorreeuunn.tistory.com/121

 

[ Python ] 파이썬 교환정렬 코드 | 파이썬에서 swap 하기

이 포스팅은 구름edu 의 파이썬으로 배우는 알고리즘 강의를 기반으로 코드를 작성했음을 밝힙니다. edu.goorm.io/learn/lecture/22654/%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%9C%BC%EB%A1%9C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EC%95%8C%EA%B3%

ffoorreeuunn.tistory.com

 

 

[4] GitHub - [파이썬] 3주차 : 함수 

https://blackinkgj.github.io/python-lecture-3/


 

[파이썬] 3주차 : 함수

파이썬의 함수를 사용해보도록 한다.

blackinkgj.github.io


[5] 티스토리 - [python] List 두 인자 위치 변경하기(스와프, swap) - 식뮬레이션

https://sikmulation.tistory.com/86

 

[python] List 두 인자 위치 변경하기(스와프, swap)

Python에서 리스트(List)에서 두 요소의 위치를 바꾸려면 다음과 같이 할 수 있다. 간단한 방법으로 두 변수의 값을 서로 교환하면 된다. 예를 들어, 리스트 my_list에서 인덱스 i와 인덱스 j의 값을 바

sikmulation.tistory.com

 

[6] 티스토리 - [Python/파이썬] 리스트의 두 요소 위치 변경하기 (스와프,swap)

https://growingarchive.tistory.com/146

 

[Python/파이썬] 리스트의 두 요소 위치 변경하기 (스와프,swap)

파이썬의 리스트 요소의 위치를 변경하고 싶을 때 사용하는 간단한 방법을 소개한다. #리스트의 0번째 요소와 3번째 요소의 값을 변경하고 싶다. array = [1,2,3,4,5] #스와프 array[0], array[3] = array[3], ar

growingarchive.tistory.com

 

[7] TISTORY - 파이썬 리스트 내에서 자료 스왑하기

https://0giru.tistory.com/3

 

파이썬 리스트 내에서 자료 스왑하기

파이썬을 공부하다보면 배열(리스트)을 처리하는데 아주 유용한 언어라는 것을 자주 느낄 수 있다. 코딩을 하다가 리스트 내부에서 인덱스 자료를 바꿔주어야 할 때에 다른 언어에서는 다른 임

0giru.tistory.com

 

[8] 티스토리 - 파이썬 리스트 List 스왑 swap - 나의 첫 기술 블로그 함께 기록해요

https://hi-datalab.tistory.com/63

 

파이썬 리스트 List 스왑 swap

파이썬 리스트에서 두 원소값 서로 바꾸기 #파이썬은 한줄로 가능 List = [3, 5] List[0], List[1] = List[1], List[0] List [5, 3] #기존 다른 언어는 temp라는 임시변수를 사용하여 값을 바꾼다 List = [3, 5] temp = Lis

hi-datalab.tistory.com

 

 

728x90