>백엔드 개발 >파이썬 튜토리얼 >효율적인 기술을 사용하여 목록을 균형 잡힌 부분으로 어떻게 분할할 수 있습니까?

효율적인 기술을 사용하여 목록을 균형 잡힌 부분으로 어떻게 분할할 수 있습니까?

DDD
DDD원래의
2024-11-15 12:23:02513검색

How Can I Split a List into Balanced Parts with an Efficient Technique?

효율적인 분할 기술을 통한 목록 분산 균형

데이터 조작 영역에서 목록을 여러 부분으로 균등하게 배포하는 기능 원하는 길이는 매우 중요합니다. 이 문제는 동시 처리를 위해 데이터를 분할하거나 항목을 관리 가능한 하위 집합으로 구성하는 경우와 같은 다양한 시나리오에서 발생합니다.

일반적으로 사용되는 접근 방식 중 하나는 목록을 지정된 크기의 청크로 나누는 Chunks() 함수입니다. 그러나 이 방법은 모든 경우에 대략 동일한 부품을 생성하는 정밀도가 부족합니다. 예를 들어, 7개 요소 목록을 2개 부분으로 분할하면 3개 요소와 4개 요소가 고르지 않게 덩어리지게 됩니다.

이 제한 사항을 해결하기 위해 보다 세련된 솔루션이 제시됩니다.

def split(a, n):
    k, m = divmod(len(a), n)
    return (a[i*k+min(i, m):(i+1)*k+min(i+1, m)] for i in range(n))

이 접근 방식은 divmod() 함수를 사용하여 크기 k의 전체 청크 수와 나머지 부분 청크 m의 요소 수를 계산합니다. 그 후 루프는 인덱스 i부터 시작하여 각 청크를 반복하고 목록을 분할하여 원하는 하위 집합을 검색합니다.

예를 들어 다음 예를 고려하세요.

>>> list(split(range(11), 3))
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10]]

여기서 시나리오에서 목록 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]은 거의 동일한 세 부분으로 우아하게 분할되며 각 청크에는 4개 또는 3개의 요소가 포함됩니다.

이 기술을 프로그래밍 무기고에 통합하면 효율적이고 균형 잡힌 방식으로 목록을 관리할 수 있는 강력한 도구를 얻을 수 있습니다.

위 내용은 효율적인 기술을 사용하여 목록을 균형 잡힌 부분으로 어떻게 분할할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.