输入是长度,例如L = [3,3,2] 我需要构造一个itertools迭代器,该迭代器将返回L中长度的“分段”排列,在[3,3,2]的情况下,我将拥有:
[0,1,2, 3,4,5, 6,7]
[0,1,2, 3,4,5, 7,6]
[0,1,2, 3,5,4, 6,7]
[0,1,2, 3,5,4, 7,6]
[0,1,2, 4,3,5, 6,7]
...
[2,1,0, 5,4,3, 7,6]
总共应该有3!3!2!排列。
如果您能应对挑战,那么我还需要等长度地分割片段,因此在上述情况下,我也将具有上述顺序,但是从
[3,4,5, 0,1,2, 6,7]
(由于长度为3,所以对前两个块进行了置换)。