언패킹 unpacking

정의

  • 시퀀스 자료형으로부터 여러 개의 값을 개별 변수에 분리해 할당하는 기능
  • 하나의 데이터 묶음에서 개별 요소들을 추출해 각각의 변수에 직접 할당할 수 있다.
  • 시퀀스 자료형 : 리스트, 튜플, 문자열 등. 여러 개스이 값을 순서대로 나열해 저장하는 자료형
  • 확장 언패킹(*) 은 나머지 요소들을 리스트로 모을 수 있게 해준다.

문법

  • 기본 언패킹
1
변수1, 변수2, ... 변수n = 시퀀스객체
  • 확장 언패킹 : 별표(*)를 이용해 시퀀스의 나머지 요소를 하나의 변수에 모아서 할당
1
변수1, 변수n-1*, 변수n = 시퀀스객체

사용법

  • 기본 사용법
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 기본적인 언패킹
rgb = [255, 128, 0]
red, green, blue = rgb
print(f"red : {red}, green : {green}, blue : {blue}, sum : {red + green + blue}")
------------------------------------------------
>> red : 255, green : 128, blue : 0, sum : 383

# 문자열도 시퀀스 자료형이기 때문에 언패킹이 가능
word = "Hello"
fir, sec, thi, fou, fiv = word
print(f"1 : {fir} 2 : {sec} ... 5 : {fiv}")
------------------------------------------------
>> 1 : H 2 : e ... 5 : o

# set(집합)은 언패킹 순서를 보장하지 않음  
r, g, b = {255, 128, 0}
print(r, g, b)
------------------------------------------------
>> 128 0 255

# dict(딕셔너리) 또한 언패킹 순서를 보장하지 않음  
colors = {"빨간색":"red", "초록색":"green", "파란색":"blue"}
r, g, b = colors
print(r, g, b)
------------------------------------------------
>> 빨간색 초록색 파란색
  • 확장 언패킹
1
2
3
4
5
6
7
8
9
10
# 확장 언패킹  
weekly_sales = [100, 200, 300, 400, 500, 600, 700]
mon, *middle, sun = weekly_sales
print(f"월요일 판매액 : {mon}")
print(f"일요일 판매액 : {sun}")
print(f"중간 요일 판매액 : {middle}")
------------------------------------------------
>> 월요일 판매액 : 100
>> 일요일 판매액 : 700
>> 중간 요일 판매액 : [200, 300, 400, 500, 600]

Reference

방송통신대 - 오픈소스기반 데이터분석 (정재화)

Comments