Python 입문 | 리스트, 튜플, 레인지, 세트, 사전 | 튜플은 변경 불가능한 리스트?
이 목록에 비슷 “튜플"라는 것도 Python에 있다. 이것은 다음과 같이 작성한다.
변수 = (값1, 값2, ...)
값을 꺼낼 때는 변수와 마찬가지로 []에 인덱스를 지정한다. 예를 들어, str[0]와 같은 식으로 쓰면 된다.
그럼 기존 목록과 튜플은 무엇이 다른가? 그것은 “튜플 값을 변경할 수 없다"는 점이다. 즉, ‘변수’가 아니라 ‘상수’이다.
프로그래밍 세계에서는 변수처럼 값을 자유롭게 변경할 수 있는 것도 중요하지만, 반대로 “값을 변경할 수 없다"는 것도 중요하다. 어디선가 마음대로 값이 갱신 된다면 문제가 발생하게 된다 …… 그런 중요한 값을 배열처럼 많이 이용하려면 목록으로는 곤란한다.
튜플은 값이 변하지 않는 것이 보증된 목록이다. 그렇게 생각하면, 이 튜플을 사용하는 경우가 없지 않나?라고 생각 할 수 있을 것이다.
이런 “변경 불가능한 컨테이너"는 튜플 외에도 있다. 앞장에서 잠깐 나온 레인지(range) 등이 있다. 이러한 변경 불가 것을 “불변 객체(immutable)“라고 한다.
이에 대해 변경이 가능한 것은 “가변 객체(mutable)“라고 한다. 목록는 mutable 컨테이너의 대표라고 할 수 있다.
그럼 “튜플로 제공한 값을 나중에 목록으로 사용하고 싶다"라고 하는 경우는 어떻게 해야 하나? 이러한 경우에는 변환을 해주는 함수를 사용하면 된다.
튜플을 목록으로 변환
변수 = list(튜플)
목록을 튜플로 변환
변수 = tuple(목록)
그럼 아래 튜플과 리스트의 사용 예제를 보도록 하자.
tp = (0,1,2,3,4)
ls = list(tp)
for n in range(0,5):
ls[n] = ls[n] * 2
for n in tp:
print(ls[n])
튜플 tp를 준비해서 거기에서 목록 ls를 만들고, 목록의 값을 변경한다. 출력 결과를 보면서 ls값과 tp값이 어떻게 사용되고 있는지 생각해 보자.