「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > itertools の発見

itertools の発見

2024 年 11 月 7 日に公開
ブラウズ:481

Descubriendo itertools

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

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

カウント

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

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
のデカルト積を作成できるようにするパラメーターを受け取ります それ自体とのシーケンス:

itertools インポート製品からの
   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の標準ライブラリ。お役に立てば幸いです。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/johnnatan_sandovalcardon/descubriendo-itertools-507j?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3