ホームページ >バックエンド開発 >Python チュートリアル >効率的な手法でリストをバランスの取れた部分に分割するにはどうすればよいですか?

効率的な手法でリストをバランスの取れた部分に分割するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-15 12:23:02515ブラウズ

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

効率的な分割手法によるリスト分散のバランスをとる

データ操作の領域では、リストを複数の部分に均等に分散する機能。希望の長さは非常に重要です。この課題は、同時処理のためにデータを分割する場合や項目を管理可能なサブセットに整理する場合など、さまざまなシナリオで発生します。

一般的に使用されるアプローチの 1 つは、リストを指定されたサイズのチャンクに分割する 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] がエレガントに分割されています3 つのほぼ等しい部分に分割され、各チャンクには 4 つまたは 3 つの要素が含まれます。

このテクニックをプログラミングの武器庫に組み込むことで、効率的かつバランスの取れた方法でリストを管理するための強力なツールが得られます。

以上が効率的な手法でリストをバランスの取れた部分に分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。