Python itertools模塊中的product函數


product 用於求多個可迭代對象的笛卡爾積(Cartesian Product),它跟嵌套的 for 循環等價.即:

product(A, B) 和 ((x,y) for in for in B)一樣.

它的一般使用形式如下:

itertools.product(*iterables, repeat=1)

iterables是可迭代對象,repeat指定iterable重復幾次,即:

product(A,repeat=3)等價於product(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)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM