[解決済み] リストを均等な大きさのチャンクに分割するにはどうしたらいいですか?
2022-03-06 16:52:07
質問内容
任意の長さのリストがあり、それを同じ大きさのチャンクに分割して演算する必要があります。これを行うには、カウンタと2つのリストを保持し、2番目のリストが一杯になったら、それを最初のリストに追加し、次のデータのラウンドのために2番目のリストを空にするといった明白な方法がありますが、これは非常に高価になる可能性があります。
ジェネレータを使うなどして、どんな長さのリストにも対応できる良い解決策をご存知の方はいらっしゃいませんか?
で何か便利なものはないかと探していました。
itertools
しかし、明らかに有用なものは見つかりませんでした。見逃しているかもしれませんが。
関連する質問 リストをチャンクで反復処理する最も "pythonic "な方法は何ですか?
どのように解決するのですか?
欲しいチャンクを生成するジェネレーターを紹介します。
def chunks(lst, n):
"""Yield successive n-sized chunks from lst."""
for i in range(0, len(lst), n):
yield lst[i:i + n]
import pprint
pprint.pprint(list(chunks(range(10, 75), 10)))
[[10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
[20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
[30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
[40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
[50, 51, 52, 53, 54, 55, 56, 57, 58, 59],
[60, 61, 62, 63, 64, 65, 66, 67, 68, 69],
[70, 71, 72, 73, 74]]
Python2を使っている場合は
xrange()
代わりに
range()
:
def chunks(lst, n):
"""Yield successive n-sized chunks from lst."""
for i in xrange(0, len(lst), n):
yield lst[i:i + n]
また、関数を書く代わりに単純にリスト内包を使うこともできますが、このような操作を名前付き関数でカプセル化すると、コードが理解しやすくなります。 Python 3:
[lst[i:i + n] for i in range(0, len(lst), n)]
Python 2のバージョンです。
[lst[i:i + n] for i in xrange(0, len(lst), n)]
関連
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] 割り当て後にリストが予期せず変更されました。その理由と防止策を教えてください。
-
[解決済み] リストの最後の要素を取得する方法
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み] リストの要素数を取得する方法
-
[解決済み] リストからランダムに項目を選択するにはどうすればよいですか?
-
[解決済み] Javaで文字列を分割する方法
-
[解決済み] 配列をチャンクに分割する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python Decorator 練習問題
-
Python jiabaライブラリの使用方法について説明
-
PythonでECDSAを実装する方法 知っていますか?
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み] データ型が理解できない
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み】Flaskのテンプレートが見つからない【重複あり
-
[解決済み】ValueError: xとyは同じサイズでなければならない
-
[解決済み】リスト内の2つの要素ごとに繰り返し処理を行う【重複あり
-
[解決済み】pythonのリストを他の「サブリスト」、つまりより小さなリストに分割する【重複】。