Python如何递归填写排列列表?

时间:2017-02-01 03:22:31

标签: python algorithm recursion scope permutation

我正在尝试编写一个程序,给定一个数字n,将返回所述数字的所有排列。我无法正确填写清单。

到目前为止,这是我的代码:

[1, 3, 4, 7]
[1, 3, 7, 4]
[1, 4, 3, 7]
[1, 4, 7, 3]
[1, 7, 4, 3]
[1, 7, 3, 4]
[3, 1, 4, 7]
[3, 1, 7, 4]
[3, 4, 1, 7]
[3, 4, 7, 1]
[3, 7, 4, 1]
[3, 7, 1, 4]
[4, 3, 1, 7]
[4, 3, 7, 1]
[4, 1, 3, 7]
[4, 1, 7, 3]
[4, 7, 1, 3]
[4, 7, 3, 1]
[7, 3, 4, 1]
[7, 3, 1, 4]
[7, 4, 3, 1]
[7, 4, 1, 3]
[7, 1, 4, 3]
[7, 1, 3, 4]
------
[[1, 3, 4, 7], [1, 3, 4, 7], [1, 3, 4, 7], [1, 3, 4, 7], [1, 3, 4, 7], [1, 3, 4, 7], [1, 3, 4, 7], [1, 3, 4, 7], [1, 3, 4, 7], [1, 3, 4, 7], [1, 3, 4, 7], [1, 3, 4, 7], [1, 3, 4, 7], [1, 3, 4, 7], [1, 3, 4, 7], [1, 3, 4, 7], [1, 3, 4, 7], [1, 3, 4, 7], [1, 3, 4, 7], [1, 3, 4, 7], [1, 3, 4, 7], [1, 3, 4, 7], [1, 3, 4, 7], [1, 3, 4, 7]]

这是'我的输出:

a

由于某些原因,打印p很好,但将其附加到p.append(a)却无法正常工作。我的猜测是它与范围有关。

编辑: 将p.append(a[:])更改为print()可以解决问题,但有人可以向我解释为什么{{1}}会打印正确的排列,而附加会向数组添加相同的排列吗?

0 个答案:

没有答案