閱讀在這個http://docs.python.org/2/library/itertools.html#itertools.product,它說明了一切。
itertools
是一個包含一堆用於迭代集合的有用功能的包。一個有用的功能是product
函數,該函數創建一個生成器,該生成器將遍歷您提供的任意數量的可迭代集合的笛卡爾積。
itertools.product
的結果不是一個列表,它是一個生成器。 Python生成器與其他語言的協程相似。這意味着它會根據需要計算您的組合。如果您計算三個迭代的乘積,每個迭代的大小均爲100,但只使用前10個,則itertools.product
將只計算10個組合,而不是計算所有100^3個組合。
如果你真的想要一個列表對象而不是一個生成器(也許你想計算切片或其他東西),請調用list
函數並將生成器對象作爲參數傳遞。
以下代碼會生成所有組合並打印結果。
代碼:
import itertools
uk_rock_stars=[1,2,3,4,5,6,7,8,9]
uk_pop_stars=[10,11,12,13,1,4,6,22,81]
us_stars=[22,34,44,7,33,99,22,77,99]
for combination in itertools.product(uk_rock_stars, uk_pop_stars, us_stars):
print combination
輸出:
(1, 10, 22)
(1, 10, 34)
(1, 10, 44)
(1, 10, 7)
(1, 10, 33)
(1, 10, 99)
(1, 10, 22)
(1, 10, 77)
(1, 10, 99)
(1, 11, 22)
(1, 11, 34)
(1, 11, 44)
(1, 11, 7)
(1, 11, 33)
(1, 11, 99)
(1, 11, 22)
(1, 11, 77)
(1, 11, 99)
...
etc.
itertools和類似:http://docs.python.org/2/library/itertools.html?highlight= itertools#itertools.product – squiguy 2013-03-09 00:38:41