ホームページ >バックエンド開発 >Python チュートリアル >Python でリストを特定のサイズのチャンクでエレガントに反復するにはどうすればよいですか?

Python でリストを特定のサイズのチャンクでエレガントに反復するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-18 20:56:20832ブラウズ

How Can I Elegantly Iterate Through a List in Python in Specific-Sized Chunks?

エレガントなチャンク: グループ内のリストの反復

特定のサイズのチャンク内のリストの反復は、Python プログラミングの一般的なタスクです。リストに事前定義されたグループで処理される要素が含まれている場合、一般的なアプローチは提供されたコードのようになります。

for i in range(0, len(ints), 4):
    # Placeholder operation for illustrative purposes
    foo += ints[i] * ints[i + 1] + ints[i + 2] * ints[i + 3]

このアプローチは機能要件を満たす可能性がありますが、かなり不格好で Python らしくないように感じる可能性があります。この記事では、カスタム ジェネレーター関数を使用した、より洗練された慣用的なソリューションについて詳しく説明します。

def chunker(seq, size):
    return (seq[pos:pos + size] for pos in range(0, len(seq), size))

このジェネレーター関数であるチャンカーは、入力シーケンスを指定されたサイズのチャンクにエレガントに分割し、効率的な反復方法を提供します。彼ら。チャンカー内のジェネレーター式は、シーケンスの先頭から開始して、シーケンスの最後に達するかそれを超えるまでチャンク サイズずつ進みながら、各チャンクを生成します。

ここに、チャンカー関数の多用途性を示す例を示します。

text = "I am a very, very helpful text"

for group in chunker(text, 7):
   print(repr(group),)

出力:

'I am a ' 'very, v' 'ery hel' 'pful te' 'xt'

この例テキスト文字列を 7 文字ずつのグループに分割します。同様に、動物のリストや任意のデータ構造など、あらゆる種類のシーケンスで使用できます。

Python 3.12 以降では、チャンカー関数は itertools.tee() 関数を使用してさらに簡素化できます。

from itertools import tee

def chunker(seq, size):
    a, b = tee(seq, 2)
    return (list(islice(a, i, None, size)) for i in range(size))

この関数のバリエーションは、中間リストの作成を回避し、入力シーケンスを直接操作して、検出力を強調します。イテラブルを操作するための Python の組み込み関数の一部。

以上がPython でリストを特定のサイズのチャンクでエレガントに反復するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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