當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python itertools.product用法及代碼示例


用法:

itertools.product(*iterables, repeat=1)

輸入迭代的笛卡爾積。

大致相當於生成器表達式中的嵌套for-loops。例如,product(A, B) 返回與 ((x,y) for x in A for y in B) 相同的結果。

嵌套循環像裏程表一樣循環,每次迭代時最右邊的元素都會前進。此模式創建一個字典順序,因此如果輸入的可迭代對象已排序,則產品元組將按排序順序發出。

要計算迭代與自身的乘積,請使用可選的 repeat 關鍵字參數指定重複次數。例如,product(A, repeat=4)product(A, A, A, A) 的含義相同。

這個函數大致相當於下麵的代碼,隻是實際的實現不會在內存中建立中間結果:

def product(*args, repeat=1):
    # product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy
    # product(range(2), repeat=3) --> 000 001 010 011 100 101 110 111
    pools = [tuple(pool) for pool in args] * repeat
    result = [[]]
    for pool in pools:
        result = [x+[y] for x in result for y in pool]
    for prod in result:
        yield tuple(prod)

product() 運行之前,它完全消耗輸入的可迭代對象,將值池保存在內存中以生成產品。因此,它僅對有限輸入有用。

相關用法


注:本文由純淨天空篩選整理自python.org大神的英文原創作品 itertools.product。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。