【发布时间】:2021-09-15 15:22:19
【问题描述】:
我有一个列表列表,例如 [[0,1,2,3],[0,1,2,3], ..., [0,1,2,3]],其长度是先验未知的。
我的目标是遍历[0,1,2,3] 子列表的所有排列组合,每个组合都是一个列表列表,就像原始列表一样,但其中一些子列表的顺序发生了变化,例如。第二个组合可以是[[0,1,3,2],[0,1,2,3], ..., [0,1,2,3]] 和第三个[[0,3,1,2],[0,1,2,3], ..., [0,1,2,3]]。我会将它们中的每一个用于其他用途。
我想它就像一个构建二进制表一样,第一个将遍历第一个子列表的排列,保持其余子列表不变;完成后,他们在第二个子列表中推进一个排列,然后返回第一个并再次循环,依此类推。一个更简单的例子:
| [0,1] | [0,1] | [0,1] |
| [0,1] | [0,1] | [1,0] |
| [0,1] | [1,0] | [0,1] |
| [0,1] | [1,0] | [1,0] |
| [1,0] | [0,1] | [0,1] |
| [1,0] | [0,1] | [1,0] |
| [1,0] | [1,0] | [0,1] |
| [1,0] | [1,0] | [1,0] |
我遇到了这个问题,因为我考虑它的方式看起来我需要有可变数量的嵌套循环。我不知道如何从递归的角度来考虑它,因为一旦递归,我也需要循环,而一旦我return,循环就会丢失。
任何帮助表示赞赏。
【问题讨论】:
-
最好用更小的数据来展示例子,比如
[[1,2],[3,4], [5,6]]
标签: python python-3.x loops recursion