> 백엔드 개발 > C++ > 목록을 정의된 크기의 더 작은 하위 목록으로 효율적으로 분할하는 방법은 무엇입니까?

목록을 정의된 크기의 더 작은 하위 목록으로 효율적으로 분할하는 방법은 무엇입니까?

DDD
풀어 주다: 2025-01-18 04:26:08
원래의
482명이 탐색했습니다.

How to Efficiently Split a List into Smaller Sublists of a Defined Size?

목록을 지정된 크기의 하위 목록으로 분할

이 글에서는 목록을 지정된 크기의 하위 목록으로 분할하는 방법을 소개하고 두 가지 효율적인 방법을 제공합니다.

방법 1: 확장 방법 사용

다음 코드는 확장 메서드를 통해 목록 분할을 구현하는 방법을 보여줍니다.

<code class="language-csharp">public static class ListExtensions
{
    public static List<List<T>> ChunkBy<T>(this List<T> source, int chunkSize)
    {
        return source
            .Select((x, i) => new { Index = i, Value = x })
            .GroupBy(x => x.Index / chunkSize)
            .Select(x => x.Select(v => v.Value).ToList())
            .ToList();
    }
}</code>
로그인 후 복사

사용법: 목록의 ChunkBy 메소드를 직접 호출하여 필요한 블록 크기를 매개변수로 전달합니다. 예를 들어, 18개 요소 목록을 5개 요소로 구성된 청크로 분할합니다.

<code class="language-csharp">List<List<int>> chunks = myList.ChunkBy(5);</code>
로그인 후 복사

결과는 각각 5개의 요소를 포함하는 4개의 하위 목록 목록이 됩니다.

방법 2: 루프 사용

또 다른 방법은 간단한 루프를 사용하는 것입니다.

<code class="language-csharp">public static List<List<T>> SplitList<T>(List<T> list, int chunkSize)
{
    List<List<T>> chunks = new List<List<T>>();

    while (list.Count > 0)
    {
        List<T> chunk = new List<T>(chunkSize);
        for (int i = 0; i < chunkSize && list.Count > 0; i++)
        {
            chunk.Add(list[0]);
            list.RemoveAt(0);
        }
        chunks.Add(chunk);
    }

    return chunks;
}</code>
로그인 후 복사

이 메서드는 목록과 원하는 청크 크기를 인수로 받아들이고, 새 목록 목록을 생성하고, 입력 목록을 반복하면서 입력 목록이 빌 때까지 각 새 하위 목록에 chunkSize 요소를 추가합니다.

두 가지 방법 모두 목록을 지정된 크기의 하위 목록으로 효과적으로 분할할 수 있습니다. 특정 요구사항과 코딩 스타일에 가장 적합한 방법을 선택하세요.

위 내용은 목록을 정의된 크기의 더 작은 하위 목록으로 효율적으로 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿