ホームページ  >  記事  >  バックエンド開発  >  Python で `zip([iter(s)]*n)` はどのようにリストをチャンク化するのでしょうか?

Python で `zip([iter(s)]*n)` はどのようにリストをチャンク化するのでしょうか?

DDD
DDDオリジナル
2024-11-24 22:26:15648ブラウズ

How does `zip([iter(s)]*n)` Chunk a List in Python?

チャンク リストの zip: zip([iter(s)]n)

The zip() についてfunction は、複数の反復可能オブジェクトの要素をタプルのリストに結合する Python の強力なツールです。その有用性は、リストを同じサイズのチャンクに分割するなど、さまざまなアプリケーションに拡張されます。式 zip([iter(s)]n) は、これを達成するための簡潔な方法です。

この式がどのように機能するかを理解するために、コンポーネントに分割してみましょう。

  • iter(s): これにより、リスト s に対する反復子が作成され、ステップ実行できるようになります。
  • [iter(s)]*n: この行は、反復子の n 個のコピーのリストを作成し、実質的に同じリストに n 個のビューを提供します。
  • *: アスタリスク (またはスプラット) 演算子は、反復子のリストを個別の引数に解凍します。 zip().

結果として、zip() は n 個の反復子で呼び出され、それぞれが同じリストを表します。これにより、zip() は各イテレータから 1 つの要素を取得し、タプルを作成します。このプロセスは、すべての反復子が使い果たされるまで継続され、タプルのリストが生成されます。

説明のために、リスト s = [1,2,3,4,5,6,7,8 の例を考えてみましょう。 ,9] および n = 3。式 zip([iter(s)]n) は次の結果を生成します。 [(1,2,3),(4,5,6),(7,8,9)].

式をより冗長なコードに拡張すると、次のようになります:

x = iter(s)
y = iter(s)
z = iter(s)
chunked_list = list(zip(x, y, z))

このコードは、簡潔な式 zip([iter(s)]n) と同じ結果を生成します。基本的に、 iter() は反復子を作成し、 [iter(s)]*n は複数のビューを同じリストに生成し、 splat 演算子は反復子をアンパックして、 zip() が各要素の要素をタプルに結合できるようにします。

以上がPython で `zip([iter(s)]*n)` はどのようにリストをチャンク化するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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