Python - Tuple

JS · 02 Oct 2020

Tuple은 데이터 순서는 보장되지만 변경은 불가능한 Collection입니다.

이 글에서는 Tuple을 사용하는 방법에 대해서 알아보겠습니다.

  • 생성(Create)
  • 접근(Access)
  • 업데이트(Update)
  • 삭제(Delete)
  • 데이터를 갖고 있는지 확인
  • 순회(Loop)

생성(Create)

Tuple은 다음과 같이 (...)을 사용하여 생성을 합니다.

cities = ('Seoul', 'Tokyo', 'Beijing', 'Washington', 'Paris')
print(cities)

Ouput:

('Seoul', 'Tokyo', 'Beijing', 'Washington', 'Paris')

비어있는 Tuple을 생성하고 싶다면, 다음과 같이 ()으로 정의하면 됩니다. type()으로 타입을 확인해보면 생성된 객체가 Tuple임을 알 수 있습니다.

this_is_tuple = ()
print(type(this_is_tuple))  # <class 'tuple'>

주의할 점은, 다음과 같이 하나의 아이템을 갖고 있는 Tuple을 정의하려다가 string 타입으로 정의하는 경우입니다. 아래 코드의 변수는 Tuple같지만 String입니다.

this_is_not_tuple = ("Seoul")
print(type(this_is_not_tuple))  # <class 'str'>

1개의 아이템을 갖고 있는 Tuple을 정의하고 싶다면 comma를 추가하여 String이 아닌 Tuple이라고 명확하게 정의해줘야 합니다.

this_is_tuple = ("Seoul",)
print(type(this_is_tuple))  # <class 'tuple'>

접근(Access)

Tuple이 갖고 있는 데이터를 읽으려면 Tuple[index]와 같은 방식으로 접근하면 됩니다.

cities = ('Seoul', 'Tokyo', 'Beijing', 'Washington', 'Paris')
print(cities[0])
print(cities[2])

Ouput:

Seoul
Beijing

음수 방향의 Index

파이썬은 음수 방향의 Index도 지원합니다. -1은 뒤에서 가장 첫번째 index를 가리킵니다.

cities = ('Seoul', 'Tokyo', 'Beijing', 'Washington', 'Paris')
print(cities[-1])

Output:

Paris

범위 접근

시작과 끝의 index를 인자로 전달하여 여러개의 아이템을 가져올 수 있습니다. 문법은 Tuple[start_index:end_index] 이며, start_index는 포함하고 end_index는 포함하지 않는 Tuple을 리턴합니다.

아래 코드를 보시면 cities[1:3]는 Index 1을 포함하고, Index 3을 포함하지 않는 Index 2까지의 Tuple을 리턴합니다.

cities = ('Seoul', 'Tokyo', 'Beijing', 'Washington', 'Paris')
print(cities[1:3])
print(cities[-3:-1])

Ouput:

('Tokyo', 'Beijing')
('Beijing', 'Washington')

업데이트(Update)

Tuple은 변경이 불가능한 Collection이기 때문에 다음과 같이 데이터 변경은 불가능합니다. 아래 코드는 실행 중에 에러를 발생시킵니다.

cities = ('Seoul', 'Tokyo', 'Beijing')
cities[3] = 'Bangkok' # runtime error!

Ouput:

Traceback (most recent call last):
  File "/home/mjs/blog-code/python_example/tuple_example.py", line 34, in <module>
    cities[3] = 'Bangkok' # error
TypeError: 'tuple' object does not support item assignment

꼭 변경이 필요하다면 다음과 같이 Tuple을 List로 변경한 뒤에 데이터를 수정하고, 다시 Tuple로 변경하는 방법이 있습니다.

cities = ('Seoul', 'Tokyo', 'Beijing', 'Washington', 'Paris')
cities_list = list(cities)

cities_list[0] = 'Bangkok'
cities = tuple(cities_list)
print(cities)

Ouput:

('Bangkok', 'Tokyo', 'Beijing', 'Washington', 'Paris')

또는 다음과 같이 두개의 Tuple을 더하여 새로운 Tuple을 만드는 방법도 있습니다.

cities1 = ('Seoul', 'Tokyo', 'Beijing')
cities2 = ('Washington', 'Paris')
cities = cities1 + cities2

Output:

('Seoul', 'Tokyo', 'Beijing', 'Washington', 'Paris')

삭제(Delete)

다음과 같이 del 키워드로 Tuple 객체를 삭제할 수 있습니다.

cities = ('Seoul', 'Tokyo', 'Beijing')
del cities

데이터를 갖고 있는지 확인

if in 또는 if not in을 사용하여 특정 데이터가 Tuple에 존재하는지, 존재하지 않는지 확인할 수 있습니다.

if 'Seoul' in cities:
    print('Seoul is in cities.')

if 'Bangkok' not in cities:
    print('Bangkok is not in cities.')

Output:

Seoul is in cities.
Bangkok is not in cities.

순회(Loop)

다음과 같이 for in을 사용하여 Tuple의 모든 데이터를 순회할 수 있습니다.

cities = ('Seoul', 'Tokyo', 'Beijing', 'Washington', 'Paris')
for city in cities:
    print(city)

Output:

Seoul
Tokyo
Beijing
Washington
Paris
댓글을 보거나 쓰려면 이 버튼을 눌러주세요.
codechachaCopyright ©2019 codechacha