python 多層for循環嵌套的優化方法

題目:有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)

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章