본문 바로가기

Programming/Python

[Python] 파이썬 튜플(tuple) 사용 방법

반응형

파이썬은 리스트(list)와 유사한 튜플(tuple) 데이터 타입을 제공합니다.

튜플은 리스트와 유사하게 여러 데이터를 담을 수 있습니다.

다만 튜플은 한 번 생성된 데이터를 변경할 수 없다는 특징이 있습니다.

튜플은 값을 변경하지 않고 계속 참조하고 싶을 때 고려할 수 있는 데이터 타입입니다.

파이썬의 튜플에 대해서 알아보도록 하겠습니다.

 

1. tuple 생성

파이썬에서 튜플은 ()로 표현되며 다음과 같은 방법으로 생성 가능합니다.

a = (1, 2, 3)
b = ('Green', 1, (1, 2))
c = tuple((1, 2, 3))

여러 타입을 한 튜플 안에 넣을 수 있으며 튜플 자체도 타입이기 때문에 포함될 수 있습니다.

간단하게 ()로 초기화를 할 수도 있고 tuple()을 사용할 수도 있습니다.

처음 생성한 이후에는 수정이 되지 않기 때문에 생성할 때 필요한 데이터를 입력해야 합니다.

 

2. tuple 연산

곱셈과 덧셈 연산자를 통해 튜플끼리 더하거나 값을 반복해서 생성할 수 있습니다.

a = (1, 2)
b = (3, 4)

c = a + b
print(c)

d = a * 3
print(d)

결과는 다음과 같이 출력됩니다.

결과

덧셈은 두 개의 튜플을 하나의 튜플로 합쳐서 만들어 줍니다.

곱셈의 경우 내부의 값이 곱한 값만큼 반복됩니다.

 

3. tuple 길이 확인

리스트와 마찬가지로 len() 메소드를 호출해서 길이를 알아낼 수 있습니다.

a = (1, 2, 3, 4)
print(len(a))

총 4개의 값이 들어있기 때문에 4를 출력합니다.

 

4. 인덱싱과 슬라이싱

튜플은 한 번 생성되면 수정이 불가능하지만 인덱싱과 슬라이싱은 가능합니다.

인덱싱을 통해 원하는 위치의 값을 가져올 수 있습니다.

a = ('Red', 1, 2, 'Green')
print(a[0])
print(a[1])
print(a[2])
print(a[3])

인덱스는 0부터 시작하기 때문에 a[0]으로 값을 가져오면 가장 처음의 값을 가져옵니다.

결과

순차적으로 값을 가져오는 것을 확인할 수 있습니다.

슬라이싱은 리스트와 동일하게 동작하며 다음과 같은 형태로 지정합니다.

[시작 인덱스(포함):끝 인덱스(미포함):증가값]

시작 인덱스에 있는 값은 포함되며 끝 인덱스의 값의 포함되지 않습니다.

증가 값은 일반적으로 표기하지 않으면 1씩 증가합니다.

a = ('Red', 'Green', 'Blue', 'Yellow', 'Black', 'White')
print(f'a[:]: {a[:]}')  # ('Red', 'Green', 'Blue', 'Yellow', 'Black', 'White')
print(f'a[3:]: {a[3:]}')  # ('Yellow', 'Black', 'White')
print(f'a[:3]: {a[:3]}')  # ('Red', 'Green', 'Blue')
print(f'a[3:5]: {a[3:5]}')  # ('Yellow', 'Black')
print(f'a[1:6:2]: {a[1:6:2]}')  # ('Green', 'Yellow', 'White')
print(f'a[::-1]: {a[::-1]}')  # ('White', 'Black', 'Yellow', 'Blue', 'Green', 'Red')

시작 인덱스가 생략되면 0번째부터 값을 가져오며 끝 인덱스가 생략되면 가장 마지막의 값까지 가져옵니다.

그래서 a[:]와 같이 시작과 끝을 명시하지 않으면 원본 튜플과 동일한 튜플이 생성됩니다.

시작만 명시하면 해당 인덱스부터 끝까지 가져오게 됩니다.

반대로 끝만 명시하면 처음부터 끝 인덱스 전까지 가져옵니다.

a[1:6:2]와 같이 증가 값을 지정하면 값을 건너 뛰면서 가져올 수 있습니다.

마지막으로 a[::-1]은 원본 튜플과 완전히 반대의 순서를 가지는 새로운 튜플을 생성합니다.

 

5. 기타 tuple 메소드

튜플은 값을 변경하는 reverse()나 sort()같은 기능은 제공하지 않습니다.

값이 몇 개가 존재하는지 확인하기 위한 count()와 값이 위치한 인덱스를 찾기 위한 index()를 제공합니다.

a = (1, 1, 2, 4, 7, 10)
print(a.count(1))
print(a.count(100))

print(a.index(10))
try:
    print(a.index(100))
except ValueError:
    print('100 is not in tuple')

다음과 같이 결과를 출력합니다.

결과

count()는 해당 값이 몇 개가 존재하는지 결과를 리턴합니다.

index()는 존재할 경우 해당 인덱스를 리턴하며 없는 값일 경우 ValueError 예외를 발생시킵니다.

그렇기 때문에 index()를 사용할 때는 예외처리에 신경써야 합니다.

반응형