Pythonでzip(*[iter(s)]*n)を使用してリストを等しいチャンクに分割する方法?

Mary-Kate Olsen
リリース: 2024-11-20 13:03:21
オリジナル
401 人が閲覧しました

How to Split a List into Equal Chunks Using zip(*[iter(s)]*n) in Python?

Python でイテラブルをチャンクに圧縮する

Python では、zip([iter(s)]n)関数を使用すると、リストを同じ長さのチャンクに分割できます。仕組みは次のとおりです:

説明:

  1. iter(s): これは、入力リスト s.
  2. [ に対して反復子を作成します。 iter(s)]*n: これにより、n 個の反復子のリストが作成され、それぞれが同じリストを反復します。 s.
  3. zip(*[iter(s)]*n):

    • * は、反復子のリストを zip() 関数の個々の引数に解凍します。
    • zip() は一連の反復子を受け取り、それらの要素を次のように結合します。 tuple.

同等の詳細コード:

zip(*[iter(s)]*n の内部動作を理解する) )、同等のコードをより冗長に書き出してみましょう。構文:

s = [1, 2, 3, 4, 5, 6, 7, 8, 9]
n = 3

# Create iterators for the list
iter1 = iter(s)
iter2 = iter(s)
iter3 = iter(s)

# Zip the iterators to create chunks
chunks = zip(iter1, iter2, iter3)

# Convert the generator to a list
list_chunks = list(chunks)
ログイン後にコピー

この冗長バージョンでは:

  1. 同じリスト s に対して 3 つの反復子を作成します。
  2. これらの反復子を次を使用して zip() に渡します。 unpacking.
  3. 結果のジェネレータ式はリストに変換され、 chunks.

出力:

元のコードと詳細コードの出力は同じになります:

[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
ログイン後にコピー

これは次のとおりです。 zip(*[iter(s)]*n) がイテレータとzip 関数。

以上がPythonでzip(*[iter(s)]*n)を使用してリストを等しいチャンクに分割する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート