gpt4 book ai didi

python - 所有可能的矩阵(列表列表)仅包含原始列表元素python中的元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:44:01 25 4
gpt4 key购买 nike

我需要在没有任何外部库(如 numpy 数组)帮助的情况下生成它。
我有 5*5 矩阵的大小 N=5,元素的原始列表可以说:

elements = [1,2,3]

我想生成此网格 (5*5) 的所有可能排列:

例如 N=5

[[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
]

[[2,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
]

[[3,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
]

[[1,2,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
]

[[2,2,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
]

[[3,2,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
]

[[1,3,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
]

...

[[2,3,3,3,3],
[3,3,3,3,3],
[3,3,3,3,3],
[3,3,3,3,3],
[3,3,3,3,3],
]

[[3,3,3,3,3],
[3,3,3,3,3],
[3,3,3,3,3],
[3,3,3,3,3],
[3,3,3,3,3],
]

如果可能的话,我可以尽可能高效地生成它。
已经在网格上尝试 itertools.permutations
我更改为 N=5,因为元素的数量少于行中适合的数量,而且这样更难。

最佳答案

在 Python 中,这种类型的迭代器称为 product :

from itertools import product
N=2
elements = [1,2,3]
B=product(elements,repeat=N)
for c in product(B,repeat=N):
print c

打印

((1, 1), (1, 1))
((1, 1), (1, 2))
((1, 1), (1, 3))
((1, 1), (2, 1))
((1, 1), (2, 2))
((1, 1), (2, 3))
((1, 1), (3, 1))
((1, 1), (3, 2))
...
((3, 3), (3, 1))
((3, 3), (3, 2))
((3, 3), (3, 3))

第一个产品生成 B:一个对由您的元素组成的单个行的所有选择的迭代器。然后第二个产品生成一个迭代器,遍历由 B 中的行组成的矩阵的所有选择。

关于python - 所有可能的矩阵(列表列表)仅包含原始列表元素python中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34457878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com