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값이 어떻게 사용되고 있는지 생각해 보자.