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

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

Barbara Streisand
Barbara Streisandオリジナル
2024-11-16 10:23:02940ブラウズ

How to Divide a List into Nearly Equal Parts in Python?

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

リストを等しい部分に分割することは、プログラミングにおける一般的なタスクです。 Python の組み込み chunks() メソッドは、リストを同じサイズのチャンクに分割する方法を提供しますが、代わりにリストをほぼ同じ部分に分割したい場合はどうすればよいでしょうか?

これを実現する 1 つのアプローチは次のとおりです。リスト ジェネレーターを使用します:

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 はリストの長さを n で割った余りです。 .
  • for ループは、必要な数のパート n を繰り返します。
  • 各パートについて、k、m、および現在の反復 i に基づいて開始インデックスと終了インデックスを計算します。
  • スライス a[start:end] は、現在の部分の要素を抽出します。

例:

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

このコードは、長さ 11 のリストを 3 に分割します。パーツが作成され、それぞれ 4、4、3 つの要素を持つパーツが生成されます。

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

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