Python에서 목록을 청크로 분할
- 리스트 내포 메서드를 사용하여 Python의 목록을 청크로 분할
-
itertools
메소드를 사용하여 Python의 목록을 청크로 분할 -
lambda
함수를 사용하여 Python의 목록을 청크로 분할 -
lambda
및islice
메소드를 사용하여 Python의 목록을 청크로 분할 -
NumPy
메소드를 사용하여 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']]
lambda
및islice
메소드를 사용하여 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']]