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

2024-10-02 16:35:20 发布

您现在位置:Python中文网/ 问答频道 /正文

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大于迭代的长度。i、 e.如果你将一个集合[0,1,2]迭代4个长度,你希望得到如下这样的答案

[[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))时,它返回[],即空

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


Tags: 方法答案len情况list例子itertoolspermutation