더북(TheBook)

12.7 시퀀스의 시퀀스

지금까지 튜플들의 리스트에 집중했지만, 이 장에서 사용한 거의 모든 예제는 리스트의 리스트, 튜플의 튜플, 리스트의 튜플에도 사용할 수 있다. 가능한 조합을 모두 나열하기보단 시퀀스의 시퀀스로 얘기하는 것이 때로는 더 쉽다.

많은 상황에서 다양한 종류의 시퀀스들(문자열, 리스트, 튜플)은 서로 바꿔가며 사용될 수 있다. 따라서 이들 중에 하나를 어떻게 선택해야 할까?

우선 쉬운 것부터 살펴보면 문자열이 있다. 문자열은 원소들이 문자여야 하므로 다른 종류의 시퀀스보다 더 제한적이다. 또한, 문자열은 불변이다. 새로운 문자열을 만들지 않고 문자열의 문자를 변경하려면 문자로 된 리스트를 사용해야 한다.

보통은 리스트가 튜플보다 더 널리 쓰이는데, 이는 리스트가 가변(mutable)이기 때문이다. 그러나 리스트보다 튜플이 더 나은 경우가 있다.

1. return 문과 같은 일부 맥락에서는 리스트보다 튜플을 생성하는 것이 문법적으로 더 간단하다.

2. 시퀀스를 사전의 키로 사용하려면 튜플이나 문자열 같은 불변 타입을 사용해야 한다.

3. 시퀀스를 함수에 인수로 전달하고 있다면 튜플을 사용하는 것으로도 별칭 때문에 예상할 수 없는 동작을 하는 가능성을 낮춰준다.

튜플은 불변이므로 리스트를 변경하는 sortreverse 같은 메서드를 제공하지 않는다. 대신에 파이썬에서는 어떤 시퀀스라도 받아서 같은 원소를 정렬된 순서로 채운 새로운 리스트를 반환하는 sorted 내장 함수와 시퀀스를 받아서 역순으로 리스트를 채운 반복자를 반환하는 reversed 내장 함수가 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.