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 サイトの他の関連記事を参照してください。