Itertools 是最有趣的 Python 函式庫之一。它包含一系列受函數式語言啟發的函數,用於與迭代器一起使用。
在這篇文章中,我將提到一些最吸引我注意並且值得牢記的內容,以免每次都重新發明輪子。
好幾次我都實現了無限計數(好了,結束了
明確地在某一點用中斷)使用 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。
最後,對於這個簡短的條目,我想談談產品,一個
笛卡兒積的實現。
可用來取代循環兩個資料流的巢狀:
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
接收一個參數,允許我們計算
的笛卡爾積
與自身的序列:
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中文網其他相關文章!