순서열의 세부 자료형인 튜플과 리스트는 서로 닮은 꼴인 자료형이다. 하지만 서로의 성질은 완전히 반대이다. 튜플은 불변 객체고, 리스트는 가변 객체이기 때문이다. 튜플은 완전히 새로 할당하지 않는 한 객체의 일부를 변경하는 것이 불가능하다. 리스트는 가능한데 말이다.
튜플은 둥근 괄호( '('와 ')' )를 이용해서 선언할 수도 있고, tuple() 내장 함수를 이용할 수도 있다.
예를 들어 보자. 먼저 둥근 괄호를 이용해서 튜플을 만들어 보자.
>>> t = (1, 2, 3)
>>> t
(1, 2, 3)
>>> type(t)
<class 'tuple'>
앞에서도 이야기했지만 튜플은 읽기만 가능하고 쓰기(변경)는 허용되지 않는다. 쓰기를 시도해봤더니 인터프리터가 에러를 내뱉는다.
>>> t[0]
1
>>> t[1]
2
>>> t[1] = 4
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
t[1] = 4
TypeError: 'tuple' object does not support item assignment
자, 이번엔 tuple() 내장 함수를 보자. 이 놈은 쓸모가 많다. 문자열도, 리스트도, 튜플도 다 튜플로 만들어준다.
우선 문자열.
>>> tuple( '123' )
('1', '2', '3')
>>> tuple( '홍길동')
('홍', '길', '동')
잘된다. 이젠 리스트하고 튜플로부터 튜플을 만들어 보자. tuple() 함수를 이용하면 된다.
>>> tuple ( ( 1, 2, 3 ) )
(1, 2, 3)
>>> tuple ( [ 1, 2, 3 ] )
(1, 2, 3)
리스트는 변경이 가능한 순서열이다. 현재 있는 내용에 덧붙일 수도 있고(append), 끼워넣을 수도 있고(insert), 일부를 없앨 수도 있다(remove).
>>> l = [ 1, 2, 3 ]
>>> l.append( 4 )
>>> l
[1, 2, 3, 4]
>>> l.insert(3, 3.5)
>>> l
[1, 2, 3, 3.5, 4]
>>> l.remove(3.5)
>>> l
[1, 2, 3, 4]
리스트에는 정렬(sort), 뒤집기(reverse) 등의 기능도 있다.
>>> l = [ 1, 3, 4, 2 ]
>>> l.sort()
>>> l
[1, 2, 3, 4]
>>> l.reverse()
>>> l
[4, 3, 2, 1]
한편, 리스트는 [와 ] 사이에 원소를 나열해서 생성할 수 있지만, list() 내장 함수를 이용하는 것도 가능하다. list() 함수는 tuple() 함수처럼 다른 순서열로부터 리스트를 만들어 준다.
>>> l = list( (1, 2, 3) )
>>> l
[1, 2, 3]
>>> l = list( [1, 2, 3] )
>>> l
[1, 2, 3]
>>> l = list ( '123' )
>>> l
['1', '2', '3']
이쯤이면 튜플과 리스트에 대해 대강은 이해한 것 같다. 마지막으로 'Reverse'라는 문자열을 뒤집는 테스트 코드를 만들어 보고 오늘은 일기를 끝내야겠다.
>>> l = list( 'Reverse' )
>>> l.reverse()
>>> s = ''.join( l )
>>> s
'esreveR'
'Python' 카테고리의 다른 글
| 파이썬 공부 중간 점검. (0) | 2009/05/22 |
|---|---|
| [파이썬 일기] #4.2.4.3 불변 바이트 배열(bytes)와 가변 바이트 배열(byte array) (0) | 2009/05/20 |
| [파이썬 일기] #4.2.3.2 튜플(Tuple)과 리스트(List) (0) | 2009/05/07 |
| [파이썬 일기] #4.2.3.1 문자열 (0) | 2009/04/30 |
| [파이썬 일기] #4.2.3 순서열(Sequence) (0) | 2009/04/28 |
| [파이썬 일기] #4.2.2 Numeric 자료형 (0) | 2009/04/22 |

