itertools の発見

WBOY
リリース: 2024-09-03 10:40:01
オリジナル
599 人が閲覧しました

Descubriendo itertools

Itertools は、最も興味深い Python ライブラリの 1 つです。これには、イテレータを操作するために使用される関数型言語からインスピレーションを得た一連の関数が含まれています。

この記事では、私が最も注意を引いたもののうち、毎回車輪の再発明をしないように覚えておく価値のあるものについていくつか取り上げます。

カウント

何度か無限カウントを実装しました (まあ、終わります
while True ループを使用して、ある時点でブレークを使用して明示的に実行します。 itertools はより良い代替手段を提供します:

    from itertools import count

    for i in count(start=2, step=2):
        if i > 10:
            break
        print(i)

ログイン後にコピー
    2
    4
    6
    8
    10
ログイン後にコピー
ログイン後にコピー

例でわかるように、ブレークがなければ、count は無限の数を返します。上記のコードは次とほぼ同等です:

    i = 2

    while True:
        if i > 10:
            break

        print(i)
        i += 2

ログイン後にコピー
    2
    4
    6
    8
    10
ログイン後にコピー
ログイン後にコピー

バッチ化された

非常に一般的なことを行う関数: サイズ n のバッチでシーケンスからデータを取得します。例を見てみましょう:

from itertools import batched

    sequence = [1, 2, 3, 4, 5, 6, 7]

    for batch in batched(sequence, 2):  # lotes de tamaño 2
        print(batch)
ログイン後にコピー
    (1, 2)
    (3, 4)
    (5, 6)
    (7,)
ログイン後にコピー

この場合のように、最後のバッチのサイズが n 以下である可能性があることに注意してください。とても便利だと思いませんか?

ペアごと

これもシンプルで便利な機能です。シーケンス (実際には反復子) が与えられると、その要素がペアで与えられます。

例で詳しく見てみましょう:

from itertools import pairwise

    sequence = [1, 2, 3, 4, 5, 6, 7]

    for a, b in pairwise(sequence):
        print(a, b)
ログイン後にコピー
    1 2
    2 3
    3 4
    4 5
    5 6
    6 7
ログイン後にコピー

ペアの数は、入力シーケンスのサイズより 1 つ減ります。

製品

最後に、この短いエントリでは、製品について話したいと思います
デカルト積の実装。

2 つのデータ ストリームをループするネストされた for を置き換えるのに便利です:

from itertools import product

    A = [1, 2, 3]
    B = [5, 6, 7]

    for a, b in product(A, B):
        print(a, b)
ログイン後にコピー
   1 5
    1 6
    1 7
    2 5
    2 6
    2 7
    3 5
    3 6
    3 7
ログイン後にコピー

a のデカルト積を作成できるパラメータを受け取ります
それ自体とのシーケンス:

   from itertools import product

    A = [1, 2, 3]

    for a1, a2, a3 in product(A, repeat=3):
        print(a1, a2, a3)
ログイン後にコピー
    1 1 1
    1 1 2
    1 1 3
    1 2 1
    1 2 2
    1 2 3
    1 3 1
    1 3 2
    1 3 3
    2 1 1
    2 1 2
    2 1 3
    2 2 1
    2 2 2
    2 2 3
    2 3 1
    2 3 2
    2 3 3
    3 1 1
    3 1 2
    3 1 3
    3 2 1
    3 2 2
    3 2 3
    3 3 1
    3 3 2
    3 3 3
ログイン後にコピー

今後の投稿では、この便利な
モジュールの他の機能についても説明します Pythonの標準ライブラリ。お役に立てば幸いです。

以上がitertools の発見の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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