파이썬의 언팩킹(Unpacking)

(1) 정의

언팩킹(unpacking)은 리스트, 튜플, 배열 등 반복 가능한 객체의 내부 요소를 하나씩 풀어서 개별 변수나 위치에 할당하거나 삽입하는 과정을 의미한다.

(2) 리스트 및 튜플 언팩킹


# 리스트 언팩킹
x, y, z = [1, 2, 3]  # x=1, y=2, z=3

# 튜플 언팩킹
name, age = ("Alice", 30)  # name="Alice", age=30
    

리스트나 튜플의 길이와 변수의 개수가 일치해야 하며, 그렇지 않으면 ValueError가 발생한다.

(3) *(asterisk) 연산자를 이용한 언팩킹


# 일부만 변수에 저장하고 나머지는 * 사용
head, *body, tail = [1, 2, 3, 4, 5]  
# head=1, body=[2,3,4], tail=5

# 함수 호출 시 언팩킹
def add(a, b, c):
    return a + b + c

args = [1, 2, 3]
add(*args)  # 6
    

*는 위치 기반 언팩킹에 사용되며, 함수 정의나 호출, 리스트 조합 등 다양한 용도에 활용된다.

(4) NumPy에서의 언팩킹 활용


import numpy as np
n = 8

# 잘못된 예: 배열 안에 배열이 들어감
a = np.array([0, 1, np.zeros(n)])  # dtype=object

# 올바른 예: 배열을 평평하게 결합
b = np.array([0, 1, *np.zeros(n)])  # dtype=float64
    

NumPy에서 *를 사용하면 배열 내부의 값이 개별 원소로 처리되어 연산이나 배열 결합 시 보다 직관적인 데이터 구조를 만들 수 있다.