# 리스트 언패킹
= [1, 2, 3]
a, b, c print(a, b, c) # 출력: 1 2 3
# 튜플 언패킹
= (4, 5, 6)
x, y, z print(x, y, z) # 출력: 4 5 6
1 2 3
4 5 6
파이썬 시퀀스 언패킹
gabriel yang
October 2, 2024
파이썬에서는 시퀀스 언패킹(sequence unpacking)을 통해 리스트, 튜플 등의 시퀀스 자료형을 여러 변수에 쉽게 할당할 수 있습니다. 특히, 파이썬 3에서는 ’나머지’를 선택할 수 있는 언패킹 기능인 별 표(*
) 문법을 도입하여 더욱 유연하게 시퀀스 데이터를 처리할 수 있게 되었습니다. 이번 글에서는 시퀀스에서 나머지를 선택하는 언패킹 방법을 중심으로 설명드리겠습니다.
시퀀스 언패킹은 리스트나 튜플과 같은 시퀀스에 포함된 값을 각각의 변수에 할당하는 방법입니다. 기본적인 언패킹 예시는 다음과 같습니다.
# 리스트 언패킹
a, b, c = [1, 2, 3]
print(a, b, c) # 출력: 1 2 3
# 튜플 언패킹
x, y, z = (4, 5, 6)
print(x, y, z) # 출력: 4 5 6
1 2 3
4 5 6
위와 같이, 시퀀스의 각 요소가 각각의 변수에 할당됩니다. 그러나 시퀀스의 길이가 더 길거나 변수의 수와 일치하지 않을 경우 별 표(*
) 문법을 사용하여 나머지 값을 한 번에 처리할 수 있습니다.
*
를 활용한 나머지 선택 언패킹파이썬 3에서는 별 표(*
)를 사용하여 나머지 요소를 하나의 변수에 리스트 형태로 할당할 수 있습니다. 이를 통해 유동적인 크기의 시퀀스를 언패킹할 때 매우 유용합니다.
numbers = [1, 2, 3, 4, 5]
# 첫 번째 요소는 head, 나머지는 tail로 언패킹
head, *tail = numbers
print(head) # 출력: 1
print(tail) # 출력: [2, 3, 4, 5]
1
[2, 3, 4, 5]
위 코드에서 첫 번째 요소는 head
에, 나머지 모든 요소는 tail
에 할당되었습니다.
별 표(*
)는 시퀀스의 어느 위치에서나 사용할 수 있으며, 이를 통해 특정 부분을 추출하고 나머지를 한꺼번에 처리할 수 있습니다.
numbers = [1, 2, 3, 4, 5]
# 첫 번째와 마지막 요소는 각각 head, tail로, 나머지는 middle에 할당
head, *middle, tail = numbers
print(head) # 출력: 1
print(middle) # 출력: [2, 3, 4]
print(tail) # 출력: 5
1
[2, 3, 4]
5
이 예시에서는 첫 번째 요소는 head
, 마지막 요소는 tail
, 나머지 중간의 요소들은 middle
리스트에 할당되었습니다.
튜플에서도 동일하게 *
를 사용하여 나머지 요소를 선택할 수 있습니다.
data = (10, 20, 30, 40, 50)
# 첫 번째 요소와 나머지 요소를 나누어 언패킹
first, *rest = data
print(first) # 출력: 10
print(rest) # 출력: [20, 30, 40, 50]
10
[20, 30, 40, 50]
튜플에서도 *
을 활용하여 나머지 값을 쉽게 처리할 수 있습니다.
*
사용 제한시퀀스 언패킹에서 *
문법은 한 번만 사용할 수 있습니다. 그렇지 않으면 파이썬은 어느 위치의 값을 할당할지 모호해집니다.
따라서 시퀀스에서 나머지를 선택할 때는 하나의 변수만 *
로 지정해야 합니다.
시퀀스 언패킹과 나머지 선택 기능은 다양한 상황에서 유용하게 사용할 수 있습니다. 예를 들어, 함수의 가변 인자를 처리하거나, 특정 데이터 구조에서 일부만 추출할 때 활용할 수 있습니다.
*args
를 사용한 함수에서 인자를 나누어 처리할 수 있습니다.
리스트의 첫 번째 항목은 중요하게 다루고, 나머지를 별도로 처리하는 경우에도 유용합니다.