[解決済み] Pythonでイテレータをチャンク(n個)で反復処理する?
2022-07-27 01:12:08
質問
イテレータを指定されたサイズのチャンクに分割する良い方法(多分itertoolsで)を思いつくことができますか?
したがって
l=[1,2,3,4,5,6,7]
で
chunks(l,3)
はイテレータになります
[1,2,3], [4,5,6], [7]
私はそれを行うための小さなプログラムを考えることができますが、多分itertoolsを使用して素敵な方法ではありません。
どのように解決するのですか?
この
grouper()
のレシピを
itertools
ドキュメントの
レシピ
は、あなたが望むものに近いです。
def grouper(n, iterable, fillvalue=None):
"grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
args = [iter(iterable)] * n
return izip_longest(fillvalue=fillvalue, *args)
最後のチャンクをfill値で埋めてくれますが。
シーケンス上でのみ動作し、最後のチャンクを希望通りに処理する、より一般的でない解決策は
[my_list[i:i + chunk_size] for i in range(0, len(my_list), chunk_size)]
最後に、一般的なイテレータで動作し、希望通りの振る舞いをする解決策を紹介します。
def grouper(n, iterable):
it = iter(iterable)
while True:
chunk = tuple(itertools.islice(it, n))
if not chunk:
return
yield chunk
関連
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] Pythonでシングルトンを作成する
-
[解決済み] リストをチャンクで反復処理する最も "pythonic "な方法は何ですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] Flaskで1時間ごとに関数を実行するようにスケジュールするには?
最新
-
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のキャッシュライブラリはありますか?
-
[解決済み] PythonでSVGからPNGに変換する
-
[解決済み] データフレームをソートした後にインデックスを更新する
-
[解決済み] PyQtアプリケーションのスレッド化。QtスレッドとPythonスレッドのどちらを使うか?
-
[解決済み] Python Empty Generator 関数
-
[解決済み] virtualenvsはどこに作成するのですか?
-
[解決済み] PythonのRequestsモジュールを使ってWebサイトに "ログイン "するには?
-
[解決済み] djangoのQueryDictをPythonのDictに変更するには?
-
[解決済み] Pythonの辞書にあるスレッドセーフについて