Python에서 목록을 청크로 분할

Azaz Farooq 2023년1월30일
  1. 리스트 내포 메서드를 사용하여 Python의 목록을 청크로 분할
  2. itertools메소드를 사용하여 Python의 목록을 청크로 분할
  3. lambda함수를 사용하여 Python의 목록을 청크로 분할
  4. lambdaislice메소드를 사용하여 Python의 목록을 청크로 분할
  5. NumPy메소드를 사용하여 Python의 목록을 청크로 분할
  6. 사용자 정의 함수를 사용하여 Python에서 목록을 청크로 분할
Python에서 목록을 청크로 분할

혼합 된 값이나 요소를 포함 할 수있는 Python 데이터 구조 중 하나를 목록이라고합니다. 이 기사에서는 목록을 청크로 분할하는 다양한 방법을 소개합니다. 사양에 맞는 코드 예제를 사용할 수 있습니다.

리스트 내포 메서드를 사용하여 Python의 목록을 청크로 분할

목록 이해력을 사용하여 Python 목록을 청크로 분할 할 수 있습니다. 코드를 더 쉽게 이해할 수 있도록 작업을 캡슐화하는 효율적인 방법입니다.

전체 예제 코드는 다음과 같습니다.

test_list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]

n = 3

output = [test_list[i : i + n] for i in range(0, len(test_list), n)]
print(output)

출력:

[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9'], ['10']]

range(0, len(test_list), n)은 0에서 시작하여len(test_list)에서 끝나는 숫자 범위를n 단계로 반환합니다. 예를 들어range(0, 10, 3)(0, 3, 6, 9)를 반환합니다.

test_list[i:i + n]은 색인 i에서 시작하고 i + n에서만 끝나는 목록의 청크를 가져옵니다. 분할 목록의 마지막 청크는test_list[9]이지만 계산 된 인덱스test_list[9:12]는 오류를 발생시키지 않고test_list[9]와 동일합니다.

itertools메소드를 사용하여 Python의 목록을 청크로 분할

이 메서드는for루프를 사용하여 반복해야하는 생성기를 제공합니다. 생성기는 반복기를 설명하는 효율적인 방법입니다.

from itertools import zip_longest

test_list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]


def group_elements(n, iterable, padvalue="x"):
    return zip_longest(*[iter(iterable)] * n, fillvalue=padvalue)


for output in group_elements(3, test_list):
    print(output)

출력:

('1', '2', '3')
('4', '5', '6')
('7', '8', '9')
('10', 'x', 'x')

[iter(iterable)]*n은 하나의 반복자를 생성하고 목록에서n번 반복됩니다. 모든 반복자의 라운드 로빈은izip-longest에 의해 효과적으로 수행됩니다. 이것은 유사한 반복기이기 때문에 이러한 각 호출이 진행되어 이러한 각 zip-round-robin이 n 개체의 하나의 튜플을 생성합니다.

lambda함수를 사용하여 Python의 목록을 청크로 분할

기본lambda기능을 사용하여 목록을 특정 크기 또는 더 작은 청크로 분할 할 수 있습니다. 이 함수는 원래 목록과 N 크기 변수에서 작동하며 모든 목록 항목을 반복하고 N 크기 청크로 나눕니다.

전체 예제 코드는 다음과 같습니다.

test_list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]

x = 3


def final_list(test_list, x):
    return [test_list[i : i + x] for i in range(0, len(test_list), x)]


output = final_list(test_list, x)

print("The Final List is:", output)

출력:

The Final List is: [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9'], ['10']]

lambdaislice메소드를 사용하여 Python의 목록을 청크로 분할

lambda함수는islice함수와 함께 사용할 수 있으며 목록을 반복하는 생성기를 생성합니다. islice함수는 이터 러블에서 선택한 항목을 추출하는 이터레이터를 생성합니다. 시작이 0이 아니면 시작에 도달하기 전에 반복 가능한 요소를 건너 뜁니다. 그런 다음 항목을 건너 뛰는 단계보다 높게 설정되지 않는 한 요소가 연속적으로 반환됩니다.

전체 예제 코드는 다음과 같습니다.

from itertools import islice

test_list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]


def group_elements(lst, chunk_size):
    lst = iter(lst)
    return iter(lambda: tuple(islice(lst, chunk_size)), ())


for new_list in group_elements(test_list, 3):
    print(new_list)

출력:

('1', '2', '3')
('4', '5', '6')
('7', '8', '9')
('10',)

NumPy메소드를 사용하여 Python의 목록을 청크로 분할

NumPy라이브러리를 사용하여 목록을 N 크기의 청크로 나눌 수도 있습니다. array_split()함수는 배열을 특정 크기n의 하위 배열로 나눕니다.

전체 예제 코드는 다음과 같습니다.

import numpy

n = numpy.arange(11)

final_list = numpy.array_split(n, 4)
print("The Final List is:", final_list)

arange함수는 주어진 인수에 따라 값을 정렬하고array_split()함수는 매개 변수로 주어진 매개 변수를 기반으로 목록/하위 배열을 생성합니다.

출력:

The Final List is: [array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8]), array([ 9, 10])]

사용자 정의 함수를 사용하여 Python에서 목록을 청크로 분할

이 메서드는 목록을 반복하고 n 크기의 청크를 연속적으로 생성합니다. 여기서 n은 분할을 구현해야하는 숫자를 나타냅니다. 이 함수에는yield키워드가 사용되며 실행이 일시 중지 될 때 값이 바뀌면 함수를 중지하고 복원 할 수 있습니다. 이것은 정상적인 기능과의 중요한 차이점입니다. 정상 기능은 중단 된 위치로 돌아갈 수 없습니다. 함수에서yield문을 사용할 때이 함수를 생성기라고합니다. 생성기는 값을 생성하거나 반환하며 단순 함수로 이름을 지정할 수 없지만 반복 가능, 즉 루프를 사용하여 이름을 지정할 수 있습니다.

전체 예제 코드는 다음과 같습니다.

test_list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]


def split_list(lst, n):
    for i in range(0, len(lst), n):
        yield lst[i : i + n]


n = 3

output = list(split_list(test_list, n))
print(output)

출력:

[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9'], ['10']]

관련 문장 - Python List