이 글에서는 파이썬 리스트의 첫 번째 요소와 마지막 요소를 서로 교환하는 다양한 해결 방법을 알아봅니다.
문제 정의
리스트가 하나 주어졌을 때, 첫 번째 요소와 마지막 요소의 자리를 서로 바꿔야 합니다. 예를 들어 ['t', 'u', 't', 'o', 'r', 'i', 'a', 'l']이 입력이라면, 결과는 ['l', 'u', 't', 'o', 'r', 'i', 'a', 't']가 되어야 합니다.
이 문제는 아래에서 소개하는 것처럼 총 4가지 방식으로 해결할 수 있습니다.
방법 1 — 임시 변수를 사용하는 기본 방식
가장 직관적이고 전통적인 방법입니다. 임시 변수에 첫 번째 요소를 미리 저장해 두고, 마지막 요소를 첫 번째 위치에 대입한 후, 저장해 둔 값을 마지막 위치에 대입하여 교환을 완료합니다.
예제 코드
def swapLast(List):
size = len(List)
# Swap operation
temp = List[0]
List[0] = List[size - 1]
List[size - 1] = temp
return List
# Driver code
List = ['t','u','t','o','r','i','a','l']
print(swapLast(List))출력 결과
['l', 'u', 't', 'o', 'r', 'i', 'a', 't']
방법 2 — 음수 인덱스를 활용한 기본 방식
파이썬에서는 음수 인덱스를 사용하면 리스트 끝에서부터 요소에 접근할 수 있습니다. List[-1]은 항상 마지막 요소를 가리키기 때문에 len() 함수로 길이를 계산하는 과정을 생략할 수 있어 코드가 더 간결해집니다.
예제 코드
def swapLast(List):
# Swap operation
temp = List[0]
List[0] = List[-1]
List[-1] = temp
return List
# Driver code
List = ['t','u','t','o','r','i','a','l']
print(swapLast(List))출력 결과
['l', 'u', 't', 'o', 'r', 'i', 'a', 't']
방법 3 — 튜플 패킹과 언패킹 활용
파이썬의 튜플 패킹(tuple packing)과 언패킹(tuple unpacking) 기능을 활용하면 임시 변수 없이도 두 값을 깔끔하게 교환할 수 있습니다. 먼저 마지막 요소와 첫 번째 요소를 하나의 튜플로 묶은(packing) 뒤, 이를 다시 각 위치에 풀어주는(unpacking) 방식입니다.
예제 코드
def swapLast(List):
# Packing the elements
get = List[-1], List[0]
# Unpacking those elements
List[0], List[-1] = get
return List
# Driver code
List = ['t','u','t','o','r','i','a','l']
print(swapLast(List))출력 결과
['l', 'u', 't', 'o', 'r', 'i', 'a', 't']
방법 4 — 별표(*) 연산자를 활용한 확장 언패킹
별표(*)를 이용한 확장 언패킹(extended unpacking)을 사용하면 리스트 전체를 한 번에 분해할 수 있습니다. 첫 번째 요소는 start에, 중간 요소들은 middle에, 마지막 요소는 end에 할당된 후, 순서를 바꿔 새 리스트를 구성합니다.
예제 코드
def swapLast(List):
# Packing the elements
start, *middle, end = List
# Unpacking those elements
List = [end, *middle, start]
return List
# Driver code
List = ['t','u','t','o','r','i','a','l']
print(swapLast(List))출력 결과
['l', 'u', 't', 'o', 'r', 'i', 'a', 't']
마무리
이 글에서는 파이썬 리스트에서 첫 번째 요소와 마지막 요소를 교환하는 네 가지 방법을 살펴보았습니다. 임시 변수를 사용하는 전통적인 방식부터 음수 인덱스, 튜플 언패킹, 확장 언패킹까지 다양한 기법이 있으며, 상황과 코드 스타일에 맞게 선택하면 됩니다. 특히 튜플 언패킹을 활용한 방법은 간결하고 가독성이 좋아 실무에서도 널리 사용되는 파이썬다운(Pythonic) 기법입니다.