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の標準ライブラリ。お役に立てば幸いです。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3