Python程式查詢兩個列表的笛卡爾積


假設我們有兩個資料列表l1和l2。我們需要找到這兩個列表的笛卡爾積。眾所周知,如果兩個列表類似於(a, b)和(c, d),則笛卡爾積將為{(a, c), (a, d), (b, c), (b, d)}。為此,我們將使用itertools庫並使用此庫中提供的product()函式。此函式的返回值是一個迭代器。我們需要透過將其輸出傳遞給list()建構函式將其轉換為列表。

因此,如果輸入類似於l1 = [1,5,6] l2 = [1,2,9],則輸出將為[(1, 1), (1, 2), (1, 9), (5, 1), (5, 2), (5, 9), (6, 1), (6, 2), (6, 9)]

為了解決這個問題,我們將遵循以下步驟:

  • x := product(l1, l2) 獲取笛卡爾積的迭代器

  • ret := list(x) 將x迭代器轉換為列表

  • 返回ret

示例

讓我們看看以下實現以更好地理解

from itertools import product
def solve(l1, l2):
   return list(product(l1, l2))

l1 = [1,5,6]
l2 = [1,2,9]
print(solve(l1, l2))

輸入

[1,5,6], [1,2,9]

輸出

[(1, 1), (1, 2), (1, 9), (5, 1), (5, 2), (5, 9), (6, 1), (6, 2), (6, 9)]

更新於: 2021年10月11日

6K+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告