Study/Python

배열의 패킹과 언패킹

coldtruthk 2024. 3. 25. 17:28

패킹(packing): 하나의 변수에 여러가지의 값을 포장하는 것

언패킹(unpacking): 여러 가지의 값을 가진 하나의 변수를 여러 변수로 나누는 것

 

(1) 리스트와 튜플의 패킹과 언패킹

 

원소 개수와 변수 개수가 일치하지 않으면 오류가 발생한다.

순서 언팩킹(sequence unpacking) :리스트와 튜플의 원소가 여러 변수에 할당할 수 있다.

 

list1=[1,2,3,'apple','banana']
tuple1=(10, 20, 30, 'camera')
a,b,c,d,e= list1
f,g,h,i=tuple1
print("An element of vairable b in list 1 is ",d)
print("An element of variable e in tuple 1 is ",h)
An element of vairable b in list 1 is  apple
An element of variable e in tuple 1 is  30

 

(2) 밑줄 언팩킹

 

관례상 불필요한 값은 밑줄 _로 지정될 수 있다.

_라는 이름의 변수에 할당된다.

e,f,g,_=tuple1
print("'-' is ",_)
'-' is  camera

 

(3) 별표 언팩킹

 

  • 변수 개수가 요소 개수보다 작은 경우 변수 이름에 별표 *를 추가하면 요소가 목록으로 함께 할당된다.
  • 하나의 변수에만 *를 추가할 수 있다.
  • *가 있는 변수에 요소가 하나만 할당되어 있더라도 리스트로 할당되며 여분의 요소가 없으면 빈 리스트로 할당된다.
list1= [1, 2, 3, 'apple', 'banana']
tuple1 = (10 , 20, 30, 'camera')
a, b, *c=list1
print(c)
[3, 'apple', 'banana']
a,b, *c=tuple1
print(c)
[30, 'camera']

 

(4) 밑줄과 별표 언팩킹

  • *_은 리스트 혹은 튜플에서 변수명이 있는 위치에 하나씩 성분이 할당하고 불필요한 성분은 밑줄 _에 배정된다.
list1 = [1,2,3, 'apple', 'banana']
tuple1= (10,20,30,'camera')
a, *_, b=list1
print("'_' is ",_)
'_' is  [2, 3, 'apple']
a, *_, b =tuple1
print("'_' is ",_)
'_' is  [20, 30]

 

(5) 딕셔너리 언팩킹

def divide(a=0, b=0):
    return a/b
dict1 ={'a':5,'b':8}
divide(**dict1)
0.625

'Study > Python' 카테고리의 다른 글

프로그램 흐름제어  (3) 2024.03.27
컴프리헨션과 range()  (0) 2024.03.25
문자열  (1) 2024.03.18
math 패키지 및 통계  (0) 2024.03.12
연산자  (0) 2024.03.11