ホームページ  >  記事  >  バックエンド開発  >  リストをほぼ同じ部分に分割するにはどうすればよいですか?

リストをほぼ同じ部分に分割するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-18 05:55:02259ブラウズ

How to Split a List into Approximately Equal Parts?

リストを N 個のほぼ等しい部分に分割する

リストを等しい部分に分割することは、一般的なプログラミングの問題です。特定の課題の 1 つは、リストの長さが必要な部分の数で割り切れない場合に均等に分割することです。

たとえば、7 つの要素のリストを 2 つの等しい部分に分割することを考えてください。理想的には、各部分にはそれぞれ 3 つと 4 つの要素がある必要があります。

提供されたコード chunks() は、リストを同じサイズの要素のチャンクに分割しますが、これにより、分割しても。あるいは、チャンクを転置することで均等な分割を実現できますが、要素の順序が崩れてしまいます。

より効率的なアプローチは、改善されたコードで示されているように、リスト ジェネレーターを使用することです。

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))

このコードは、理想的なチャンク サイズ k と残りの要素 m を計算します。次に、リストを反復処理して必要なサイズの部分を作成するジェネレーターを生成します。

例:

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

このソリューションは、リストをほぼ等しい部分に分割する効率的な方法を提供します。要素の順序を維持します。

以上がリストをほぼ同じ部分に分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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