1. 程式人生 > 其它 >python 座標遍歷 生成笛卡爾積矩陣

python 座標遍歷 生成笛卡爾積矩陣

1. 主要場景

  • 生成兩個列表的組合。
  • 生成座標

2. 函式

用的是python itertools庫的product函式,它返回一個生成器,生成元組。

這個函式主要有兩種用法,一種用法是對兩個可遍歷物件進行組合,如兩個列表:

from itertools import product
A = [1,2,3]
B = ["a", "b", "c"]
for item in product(A, B):
    print(item)

輸出:

(1, 'a')
(1, 'b')
(1, 'c')
(2, 'a')
(2, 'b')
(2, 'c')
(3, 'a')
(3, 'b')
(
3, 'c')

這種情況等價於:

((x,y) for x in A for y in B)

另外一種用法是對本身進行生成,如我有一個邊長為4*4的矩形,想生成所有座標:

from itertools import product
for item in product(range(4), repeat=2):
    print(item)

輸出:

(0, 0)
(0, 1)
(0, 2)
(0, 3)
(1, 0)
(1, 1)
(1, 2)
(1, 3)
(2, 0)
(2, 1)
(2, 2)
(2, 3)
(3, 0)
(3, 1)
(3, 2)
(3, 3)

其中repeat引數指示你生成的目標的維度,以上面為例,如果生成的是3維的座標,則指定repeat=3即可。

3. 參考

https://docs.python.org/3/library/itertools.html

(完)

本文版權歸作者(https://www.cnblogs.com/harrymore/)和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連結,如有問題, 可郵件([email protected])諮詢.