題目:有5個長度不一的數組a1、a2、a3、a4、a5,現各從數組中取出一個數,組成一個新的數組,要求從a1取出的數必須小於從a2取的數,同理從a2取出的數必須小於從a3取的數,以此類推,列出所有滿足條件的數組。
題目挺簡單,看一下就明白,然後第一時間用了一堆for循環,腳本如下:
a1 = [1,2,4]
a2 = [2,3,4,5]
a3 = [1,4,7]
a4 = [3,6,7,8]
a5 = [3,6,8,9,10]
for i in a1:
for j in a2:
for k in a3:
for l in a4:
for m in a5:
if i<j<k<l<m:
print(i,j,k,l,m)
輸出結果沒錯,但是看着這一堆for循環,總感覺很不爽,一番搜索後,發現了itertools.product(A, B)這個函數,這個函數會返回A、B中的元素的笛卡爾積的元組,似乎滿足條件,於是上面的腳本改成了下面的樣子
import itertools
for i in itertools.product(a1,a2,a3,a4,a5):
if i[0]<i[1]<i[2]<i[3]<i[4]:
print(i)