Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 튜플을 하위 튜플로 분할하는 방법

Python 튜플을 일정한 크기의 하위 튜플로 나누기

Python에서 하나의 튜플을 여러 개의 하위 튜플(sub-tuple)로 분할해야 하는 경우가 종종 있습니다. 예를 들어, 12개의 정수로 이루어진 튜플을 각각 3개의 요소를 가진 4개의 하위 튜플로 나눈다고 가정해 보겠습니다.

가장 기본적인 방법은 슬라이싱(slicing)을 활용하는 것입니다. 반복문을 사용하여 튜플에서 연속된 3개의 요소씩 잘라낸 뒤, 그 조각들을 리스트에 추가하면 됩니다. 최종 결과는 각각 3개의 숫자를 담고 있는 4개의 튜플로 구성된 리스트가 됩니다.

반복문과 슬라이싱을 활용한 방법

>>> tup = (7, 6, 8, 19, 2, 4, 13, 1, 10, 25, 11, 34)
>>> lst = []
>>> for i in range(0, len(tup), 3):
    lst.append(tuple(tup[i:i+3]))
>>> lst
[(7, 6, 8), (19, 2, 4), (13, 1, 10), (25, 11, 34)]

여기서 range(0, len(tup), 3)은 인덱스 0부터 시작하여 3씩 증가하며 순회합니다. 각 단계에서 tup[i:i+3]으로 3개의 요소를 잘라내고, tuple() 함수로 명시적으로 튜플로 변환한 후 리스트에 추가합니다.

리스트 컴프리헨션으로 더 간결하게

동일한 작업은 리스트 컴프리헨션(list comprehension)을 사용하면 한 줄로 처리할 수 있어 코드가 훨씬 간결해집니다.

>>> tup = (7, 6, 8, 19, 2, 4, 13, 1, 10, 25, 11, 34)
>>> lst = [tuple(tup[i:i+3]) for i in range(0, len(tup), 3)]
>>> lst
[(7, 6, 8), (19, 2, 4), (13, 1, 10), (25, 11, 34)]

주의할 점

슬라이싱 결과는 원래 튜플이 아닌 튜플(slice) 객체 형태로 반환되므로, 결과를 튜플 타입으로 유지하고 싶다면 tuple()로 감싸주는 것이 좋습니다. 또한 전체 길이가 분할 크기로 나누어떨어지지 않는 경우, 마지막 하위 튜플은 지정된 크기보다 적은 수의 요소를 가질 수 있다는 점도 기억해 두세요.