Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 튜플 패킹과 언패킹 완벽 가이드

파이썬은 한 번 생성하면 값을 변경할 수 없는 불변(immutable) 데이터 타입인 튜플(tuple)을 제공합니다. 이 글에서는 파이썬 3.x에서 튜플을 패킹(packing)하고 언패킹(unpacking)하는 방법을 예제와 함께 자세히 알아보겠습니다.

튜플 패킹과 언패킹이란?

파이썬은 우변의 값들을 좌변의 변수들에 매핑해 주는 매우 강력한 튜플 할당 기능을 제공합니다. 이처럼 여러 값을 하나의 일반 변수에 나누어 담는 작업을 언패킹(unpacking)이라고 합니다. 반대로 패킹(packing)은 일반적인 대입 연산자를 사용하여 여러 값을 하나의 튜플로 묶는 것을 의미합니다.

기본적인 패킹과 언패킹 예제

# 하나의 변수 이름으로 튜플 변수들을 패킹
tup = ("Tutorialspoint", "Python", "Unpacking a tuple")

# 튜플을 개별 변수 그룹으로 언패킹
(website, language, topic) = tup

# 결과 출력
print(website, "\t", language, " ", topic)

실행 결과

Tutorialspoint     Python   Unpacking a tuple

튜플을 언패킹할 때는 좌변에 있는 변수의 총 개수가 튜플 tup에 담긴 값의 총 개수와 정확히 일치해야 합니다. 개수가 맞지 않으면 ValueError가 발생하므로 주의해야 합니다.

*args를 활용한 임의 길이 언패킹

파이썬은 선택적 인수 문법(*arguments)을 통해 길이가 정해지지 않은 튜플도 언패킹할 수 있도록 지원합니다. 모든 값은 지정된 순서대로 각 변수에 할당되며, 남은 값들은 전부 *arguments에 리스트 형태로 할당됩니다.

예제

# 하나의 변수 이름으로 튜플 변수들을 패킹
tup = ("Tutorialspoint", "Python", "3.x.", "Data Structure", "Unpacking a tuple")

# *language를 사용한 언패킹
(website, *language, topic) = tup

# 결과 출력
print(website, "\t", *language, " ", topic)

실행 결과

Tutorialspoint Python 3.x. Data Structure Unpacking a tuple

위 예제에서 website에는 첫 번째 값이, topic에는 마지막 값이 할당되고, 중간의 세 값은 *language에 리스트로 묶여 할당됩니다.

함수에서의 튜플 언패킹과 *_ 활용

파이썬에서는 함수에 튜플을 전달하고, 함수 내부에서 값을 일반 변수로 언패킹하는 방식으로도 튜플을 다룰 수 있습니다. 이때 필요 없는 값을 건너뛰고 싶다면 "*_"를 사용하면 됩니다. 별표(*)는 임의 개수의 인수를 지정하는 역할을 하며, 밑줄(_)은 해당 값을 사용하지 않겠다는 관례적 표현입니다.

예제

# 하나의 변수 이름으로 튜플 변수들을 패킹
tup = ("Tutorialspoint", "Python", "3.x.", "Data Structure:", "Unpacking a tuple")

# 불필요한 인수를 건너뛰면서 언패킹
(website, *_, typ, topic) = tup

# 결과 출력
print(website, "\t", typ, " ", topic)

실행 결과

Tutorialspoint     Data Structure:     Unpacking a tuple

만약 건너뛰고 싶은 값이 단 하나뿐이라면 "*_" 대신 "_"만 사용하면 됩니다.

마무리

이번 글에서는 파이썬에서 튜플을 패킹하고 언패킹하는 다양한 방법을 살펴보았습니다. 기본 언패킹부터 *args를 활용한 유연한 언패킹, 그리고 *_를 이용한 값 생략까지 익혀두면 코드를 더욱 간결하고 가독성 높게 작성할 수 있습니다.