프로그래밍 공부

[Python] 튜플 그리고 리스트

Seashark 2019. 2. 11. 10:00

지난번엔 리스트에 대해서 알아보았습니다.

이번에 다룰 튜플이라는 자료형은 리스트와 비슷합니다.

튜플은 자료형과 모든게 같지만, 딱 한가지 다른것이 변경불가 라는 점입니다.


실제로 우리가 예전에 다루었던 string은 튜플이기도 합니다. 변경이 불가능한 list이기 때문이죠...


튜플은 리스트와 다르게 선언을 할때 소괄호 '()' 혹은 아얘 없이 선언합니다.


1
2
3
4
#튜플 설명용 예제
 
tuple_a = 10,'red',True # int, string, bool datatype saved in a 
print(tuple_a)  #printing tuple variable a
cs

위에 코드를 실행해보시면 (10, 'red', True) 라는 결과값이 나올것입니다. 리스트와 다른점은 대괄호가 소괄호로 바뀌었다는점 정도...?


그럼 이 튜플을 사용하는 가장 큰 이유가 무엇일까요? 

리스트와 변경 불가능하다는점 빼고는 모든것이 같은 튜플은 리스트로 대체가 가능합니다. 하지만 변경이 가능하고 불가능하다는점 하나때문에 데이터의 안전을 위해서 쓰기 좋습니다. 예를들어 비밀번호를 다루는 일이 있을때 비밀번호가 리스트로 저장이 되어있다가 실수로 바뀌게 되면 난감하겠죠? 또한 프로그램을 실행할때 있어서 리스트에비해 메소드의 수가 적습니다 (리스트에는 존재하는 remove(), insert(), append() 같은 수정용 메소드들이 없습니다) 그렇기때문에 실행에 있어서 훨씬 간결하고 빠르다는 장점이 있습니다. 그 말은 속도가 중요한 프로그램에서는 튜플이 더 좋은 성능을 보여준다는 의미입니다.


그럼 튜플의 패킹과 언패킹에 대해 알아보겠습니다.


패킹은 단어의 의미와 동일하게 여러가지 데이터 타입을 튜플로 만드는것을 의미합니다. 위에있는 예제와 동일하죠.


그럼 언패킹은 무엇인가 하면 패킹한 값들을 하나하나 다시 저장하는것을 의미합니다.

1
2
3
4
5
6
7
8
9
10
11
#튜플 설명용 예제
 
tuple_a = 10,'red',True # int, string, bool datatype saved in a 
print(tuple_a)  #printing tuple variable a
 
b,c,d = tuple_a #unpacking
print(b)    #10
print(c)    #'red'
print(d)    #True
 
 
cs

위에 예제중 6행부터가 언패킹입니다. 

6행의 b,c,d 라는 세가지 변수에 위에서 선언산 tuple_a의 값들을 하나씩 순서대로 저장하는 개념입니다. 참고로 앞에있는 변수의 개수가 튜플에 저장되어있는 항목들의 개수와 동일해야만 실행이 됩니다.


하지만 가끔은 자료형을 바꿔주어야 할 때도 있습니다. 그럴때 쓰는 메소드가 tuple(), 그리고 list() 입니다.

1
2
3
4
5
6
7
8
9
10
11
#튜플 설명용 예제
 
tuple_a = 10,'red',True # int, string, bool datatype saved in a 
print(tuple_a)  #printing tuple variable a
 
list_a = list(tuple_a)    #turning tuple_a into list_a
tuple_b = tuple(list_a)    #turning list_a into tuple_b
 
print(tuple_a)    #printing original tuple_a
print(list_a)    #printing List form of tuple_a
print(tuple_b)    #printing Tuple form of list_a
cs

위의 예제를 실행시키면 튜플과 리스트사이에 자료들이 바뀌는 모습을 볼 수 있습니다. 


이번 포스트에서는 리스트와 비슷하지만 다른 자료형인 튜플에대해 알아보았습니다. 다음번 포스트에서는 딕셔너리와 세트에 대해 알아보겠습니다.


감사합니다.




반응형