迭代列表(长度n)以包含集合X的每个可能的变体,其中n大于len(唯一(X))

问题描述 投票:0回答:1

itertools.permutation(iterate, r)提供了一种方法来提供长度rlen(iterate)的一组排列。但是,如果 -

r> len(iterate)

举个例子。

list(intertools.permutation([0, 1, 2]))回归......

[(0, 1, 2), (0, 2, 1), (1, 0, 2), (1, 2, 0), (2, 0, 1), (2, 1, 0)]

这是预料之中的。

但是让我们说我们希望r大于迭代的长度。也就是说,如果你在4的长度上迭代一个集合[0,1,2],你希望得到这样的答案,如下所示。

[[0, 0, 0, 0]
 [0, 0, 0, 1]
 [0, 0, 0, 2]
 [0, 0, 1, 1]
 [0, 0, 1, 2]
 ...
 [2, 2, 1, 2]
 [2, 2, 2, 0]
 [2, 2, 2, 1]
 [2, 2, 2, 2]]

但是当你尝试list(itertools.permutation([0, 1, 2], 4))时,它返回[]即空

如果有人知道这样做的方法,请告诉我。

python iteration
1个回答
1
投票

尝试使用itertools.product(*iterables, repeat=1)

在你的情况下,你可以使用list(itertools.product(range(3), repeat=4))

© www.soinside.com 2019 - 2024. All rights reserved.