Appia의 IT세상

파이썬[Python] 035 Container 타입의 Unpack (패킹/언패킹) 본문

Python/Python 응용

파이썬[Python] 035 Container 타입의 Unpack (패킹/언패킹)

Appia 2020. 1. 11. 17:51
반응형

이번 포스팅은 기존에 포스팅 했던 변수 대입에 관련해서 Container 타입의 언패킹(Unpacking) 대해서 이야기를 해보고자 합니다. 그럼 먼저, Container 타입이란 무엇일까요? Container 타입이란, 리스트, 튜플, 딕셔너리등과 같이 여러 개의 값을 가지고 있는 데이터 타입을 의미합니다. . 순환 가능한 모든 객체라고 수도 있습니다. ( Container 타입은 아니지만, 유사하게 문자열, 파일, 이터레이터, 제너레이터가 포함)

 

먼저 간단히 변수 대입을 보면 다음과 같습니다.

 

 A = 1 

 

위와 같이 간단히 하나의 식에 대해서 대입할 때는 많은 생각이 필요 없습니다. 그럼 다음과 같은 예제를 살펴보겠습니다.

 

Num = [0,1,2,3,4,5]

A1 = Num[0]
A2 = Num[1]
A3 = Num[2]
A4 = Num[3]
A5 = Num[4]

 

이와 같은 경우 매우 번거롭습니다. 반복문 써야 하나 하는 생각을 있습니다. 이럴 경우를 위해서 나오는 개념이  변수의 언패킹(Unpacking)입니다.

 

먼저 패킹은 여러 개의 데이터를 하나의 변수에 담는 것입니다. 위에 보이는 List Num 0,1,2,3,4,5 번에 입력하는 것을 패킹이라고 합니다.

 

Num = [0,1,2,3,4,5]

 

변수의 데이터 나누어 담는 방법이 언패킹입니다. 다음 예제를 살펴보겠습니다. 

 

Num=[1,2,3,4,5]
A1,A2,A3,A4,A5=Num
print(A1,A2,A3,A4,A5)

Num 이라는 변수의 값들을 각각 A1,A2,A3,A4,A5에 변수 대입을 진행했습니다. 위의 예제를 실행하면 다음과 같은 결과가 나옵니다. 

1 2 3 4 5

 

언패킹 시에는 반드시 언패킹 튜플, 리스트등의 맴버가 좌항의 변수의 개수와 일치해야 합니다.

 

Num=[1,2,3,4,5]
A1,A2,A3,A4=Num

 

위의 예제와 같이 다를 경우 다음과 같은 에러를 나타냅니다.

Traceback (most recent call last):
File "C:/Users/Bens/PycharmProjects/Blogger/Pack_UnPack.py", line 2, in
A1, A2, A3, A4 = Num
ValueError: too many values to unpack (expected 4)

 

저의 언패킹 할경우 사용하지 않을 데이터는 동일 변수에 저장시킵니다. 다음과 같습니다.

Num=[1,2,3,4,5]
A1,A2,_,A3,A4=Num

_ 데이터를 저장시켜버린 거죠. 그럼으로, _ 안쓰는 변수처럼 생각할 있겠죠. 물론, 별도의 변수를 만들고, 그 변수에만 값을 입력하셔도 됩니다. 

 

오늘은 간단하게 Container 타입의 변수들을 한번에 치환하는 언패킹에 대해서 살펴봤습니다. 혹 궁금하신 사항이나 문의사항이 있으시면 언제든지 댓글 및 방명록에 글 부탁드립니다. 

반응형
Comments