22.7 튜플 응용하기

이번에는 튜플의 메서드와 다양한 사용 방법을 알아보겠습니다.

튜플은 리스트와는 달리 내용을 변경할 수 없습니다(불변, immutable). 따라서 내용을 변경하는 append 같은 메서드는 사용할 수 없고, 요소의 정보를 구하는 메서드만 사용할 수 있습니다.

22.7.1  튜플에서 특정 값의 인덱스 구하기

index(값)은 튜플에서 특정 값의 인덱스를 구합니다. 이때 같은 값이 여러 개일 경우 처음 찾은 인덱스를 구합니다(가장 작은 인덱스). 다음은 53이 세 번째에 있으므로 인덱스 2가 나옵니다.

>>> a = (38, 21, 53, 62, 19, 53)
>>> a.index(53)
2
그림 22-20 index로 특정 값의 인덱스 구하기

22.7.2  특정 값의 개수 구하기

count(값) 튜플에서 특정 값의 개수를 구합니다. 다음은 튜플 (10, 20, 30, 15, 20, 40)에서 20의 개수를 구합니다. 여기서는 20이 2개 들어있으므로 2가 나옵니다.

>>> a = (10, 20, 30, 15, 20, 40)
>>> a.count(20)
2
그림 22-21 count로 특정 값의 개수 구하기

22.7.3  for 반복문으로 요소 출력하기

for 반복문으로 요소를 출력하는 방법은 리스트와 같습니다.

>>> a = (38, 21, 53, 62, 19)
>>> for i in a:
...     print(i, end=' ')
...
38 21 53 62 19

22.7.4  튜플 표현식 사용하기

튜플을 리스트 표현식처럼 생성할 때는 다음과 같이 tuple 안에 for 반복문과 if 조건문을 지정합니다.

  • tuple(식 for 변수 in 리스트 if 조건식)
>>> a = tuple(i for i in range(10) if i % 2 == 0)
>>> a
(0, 2, 4, 6, 8)

참고로 ( )(괄호) 안에 표현식을 넣으면 튜플이 아니라 제너레이터 표현식이 됩니다(제너레이터는 'Unit 40 제너레이터 사용하기'에서 설명하겠습니다).

>>> (i for i in range(10) if i % 2 == 0)
<generator object <genexpr> at 0x050FE420>

22.7.5  tuple에 map 사용하기

튜플에 map을 사용 방법도 리스트와 같습니다.

>>> a = (1.2, 2.5, 3.7, 4.6)
>>> a = tuple(map(int, a))
>>> a
(1, 2, 3, 4)

22.7.6  튜플에서 가장 작은 수, 가장 큰 수, 합계 구하기

물론 튜플도 min, max 함수로 가장 작은 수와 가장 큰 수를 구하고, sum 함수로 요소의 합계를 구할 수 있습니다.

>>> a = (38, 21, 53, 62, 19)
>>> min(a)
19
>>> max(a)
62
>>> sum(a)
193

지금까지 리스트의 다양한 메서드와 응용 방법을 배웠는데, 내용이 조금 어려웠습니다. 리스트 메서드는 모두 외우지 않아도 되며 파이썬을 사용하다 보면 자연스럽게 익히게 됩니다. 여기서는 리스트와 반복문을 사용하는 방법이 중요합니다. 특히 파이썬에서는 리스트 표현식을 자주 사용하므로 이 부분을 반복 학습하여 정확하게 익히는 것이 좋습니다.