레이블이 tuple인 게시물을 표시합니다. 모든 게시물 표시
레이블이 tuple인 게시물을 표시합니다. 모든 게시물 표시

2021년 5월 7일 금요일

[파이썬] 데이타의 패킹(Packing)과 언패킹(Unpacking)

 

파이썬만의 특이한 동작이 있는데, 이중 데이터의 패킹과 언패킹이 있습니다.

 

패킹은 말그대로 둘러싼다는 의미로 하나의 변수에 여러 개의 데이터를 넣는 것입니다.

 

앞서 언급된 튜플이라는 데이터형이 있었는데, 바로 이걸 사용하면 데이터 패킹이 됩니다.

 

아래의 소스를 보면 test1, 3 그리고 9를 한번에 넣을 수가 있는데, 이때 test라는 변수는 튜플 데이타형으로 자동으로 됩니다.

 

test = 1, 3, 9

 

그것은 아래와 같이 하면 바로 확인이 가능합니다. test의 변수 타입이 튜플임을 알 수 있고 3개의 값이 저장되어 있음을 알 수 있습니다.

 

>>> print (type(test), test)

<class 'tuple'> (1, 3, 9)

 

언패킹은 여러 개의 데이터가 패킹된 것을 풀어서 각각의 다른 변수에 저장하는 것입니다.

 

아래를 보면 test1, 3 그리고 9가 저장되어 있었는데, 이것을 a, b, c라는 변수에 하나씩 언패킹되어 저장됨을 알 수 있습니다.

 

>>> a, b, c = test

>>> print (type(a), a, type(b), b, type(c), c)

<class 'int'> 1 <class 'int'> 3 <class 'int'> 9

 

이는 파이썬만의 독특한 동작입니다. 그리고 언패킹은 list형의 변수인 경우에도 가능합니다.

 

아래에 보면 이번에는 testlist형인데, 앞에서와 마찬가지로 a, b, c 변수에 하나씩 언패킹하여 저장할 수도 있습니다.

 

>>> test = [1, 3, 9]

>>> a, b, c = test

>>> print (type(a), a, type(b), b, type(c), c)

<class 'int'> 1 <class 'int'> 3 <class 'int'> 9

 

패킹과 언패킹을 이용하면 2개의 변수 값을 바로 치환할 수 있습니다.

 

아래를 보시면 다른 언어에서는 임시 변수를 하나 만들어 2개의 변수 값을 변경해야 하는데, 파이썬에서는 아주 간단하게 2개 변수의 값을 치환할 수 있음을 알 수 있습니다.

 

>>> a = 5

>>> b = 10

>>> a, b = b, a   # b, a가 패킹되었다가 a, b에 언패킹되어 바로 치환가능

>>> print (a, b)

10 5

 

2020년 7월 20일 월요일

파이썬의 특이한 튜플 (tuple) 데이타형

파이썬만의 특이한 데이타형이 있는데 바로 튜플(tuple)이라는 것이 있습니다.

형태를 보면 아주 리스트형과 비슷합니다. 하지만 몇가지 면에서는 조금 다른 재미있는 데이타형입니다.

리스트는 []를 사용하여 정의하는데요. 반면 튜플은 ()를 사용하여 정의합니다.

그리고 또다른 점은 리스트는 그 멤버들의 값을 변경할 수가 있는데, 튜플은 한번 정의하면, 그 멤버의 겂을 변경할 수가 없습니다.

튜플을 정의하는 방법은 아래 소스와 같습니다.

a1 = ()
print ("비어있는 tuple - tuple a1 ", a1)

a2 = (1,)
print ("원소가 하나만 있는 tuple - tuple a2 ", a2)

a3 = (1, 5, 3)
print ("원소가 여러개인 tuple - tuple a3 ", a3)

a4 = 1, 3, 9
print ("원소가 여러개인 tuple (괄호 없이 정의) - tuple a4 ", a4)

a5 = ('a', 'b', ('a', 'b'))
print ("원소가 문자이면서 여러개인 tuple - tuple a5 ", a5)

그리고 이 소스의 실행 결과는 아래와 같습니다.

비어있는 tuple - tuple a1  ()
원소가 하나만 있는 tuple - tuple a2  (1,)
원소가 여러개인 tuple - tuple a3  (1, 5, 3)
원소가 여러개인 tuple (괄호 없이 정의) - tuple a4  (1, 3, 9)
원소가 문자이면서 여러개인 tuple - tuple a5  ('a', 'b', ('a', 'b'))

다른 부분은 거의 리스트형과 비슷하지만 4번째 부분이 아주 특이합니다. 괄호없이 그냥 원소들을 나열하기만 해도 듀플로 정의된다는게 신기합니다.