簡體   English   中英

如何創建行和列排列的二維列表(矩陣)

[英]How to create 2D lists(matrix) with rows and columns being permutations

我想遍歷所有可能的 n* n 矩陣,其中行和列是 0 到 n-1 的排列。 例如,一個 3*3 矩陣將是 [[0,1,2],[1,2,0],[2,0,1]]。 這是我到目前為止所擁有的

import itertools
l = list(itertools.permutations(range(0, n), n))
p = list(itertools.product(l, repeat=n))
for matrix in p:
   ...

但它顯然只有行作為排列並占用大量內存。 我不需要存儲所有的可能性,但我只需要用一些屬性迭代和測試它們中的每一個。 n 也不需要很大,目前我的目標是讓它低於 8。

如果您能回答我的問題,我將不勝感激。

itertools.permutationsitertools.product都是迭代器。 由於您一次只需要存儲一個“矩陣”,請利用這一事實:

for m in itertools.product(itertools.permutations(range(n), n), repeat=n):
    # test properties of m

不幸的是,這仍然需要存儲評估乘積的排列,對於n=8 ,這將是40320元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM