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

Python에서 튜플을 N개씩 청크로 나누는 방법

파이썬에서 튜플(tuple)을 'N'개 값씩 작은 청크(chunk)로 나눠야 할 때, 리스트 컴프리헨션(list comprehension)을 활용하면 아주 간단하게 처리할 수 있습니다.

리스트 컴프리헨션은 리스트나 튜플 같은 시퀀스를 반복(iterate)하면서 원하는 연산을 수행할 수 있도록 해주는 축약형 문법입니다. 복잡한 반복문 없이 한 줄의 코드로 깔끔하게 로직을 표현할 수 있다는 장점이 있습니다.

아래 예제를 통해 실제 동작 방식을 살펴보겠습니다.

예제

my_tuple_1 = (87, 90, 31, 85, 34, 56, 12, 5)

print("첫 번째 튜플은 :")
print(my_tuple_1)
N = 2
print("'N'의 값이 초기화되었습니다")

my_result = [my_tuple_1[i : i + N] for i in range(0, len(my_tuple_1), N)]

print("청킹 후의 튜플은 : ")
print(my_result)

출력 결과

첫 번째 튜플은 :
(87, 90, 31, 85, 34, 56, 12, 5)
'N'의 값이 초기화되었습니다
청킹 후의 튜플은 :
[(87, 90), (31, 85), (34, 56), (12, 5)]

코드 설명

  • 먼저 하나의 튜플을 정의한 뒤, 콘솔에 출력합니다.
  • 'N' 변수에 청크 크기로 사용할 값을 초기화합니다.
  • 'range' 메서드를 사용해 0부터 튜플 길이까지 N 간격으로 인덱스를 생성하고, 대괄호([])를 이용한 슬라이싱으로 튜플을 N개씩 잘라냅니다.
  • 슬라이싱된 결과들은 하나의 리스트 형태로 변환되어 저장됩니다.
  • 이 최종 결과값이 my_result 변수에 할당됩니다.
  • 마지막으로 결과가 콘솔에 출력됩니다.

동작 원리

range(0, len(my_tuple_1), N)은 0부터 시작해 N씩 증가하는 인덱스(0, 2, 4, 6...)를 생성합니다. 각 인덱스 i에 대해 my_tuple_1[i : i + N] 슬라이싱을 적용하면 N개의 요소를 담은 새로운 튜플이 만들어집니다. 이렇게 생성된 여러 개의 튜플이 최종적으로 하나의 리스트에 모여 청킹된 결과가 완성됩니다.

참고 사항

튜플의 전체 길이가 N으로 나누어 떨어지지 않는 경우에는 마지막 청크가 N보다 적은 수의 요소를 가질 수 있습니다. 예를 들어 요소가 9개인 튜플을 N=2로 나누면, 마지막 청크에는 1개의 요소만 포함됩니다. 이 점을 고려해 데이터 처리 로직을 설계하면 좋습니다.