gpt4 book ai didi

python - 如何编写代码来生成从 1 到 N 的排列

转载 作者:行者123 更新时间:2023-12-01 04:55:39 24 4
gpt4 key购买 nike

嗨:我正在尝试编写 python 代码来生成排列:要获得 perm(n),我会将 n 插入到 的位置重复 perm(n-1) n 次的结果为 0n-1

例如,要获得perm(2),我会这样做:

  1. 重复[1] 2次,得到L1 = [[1], [1]]

  2. 对于L1中的每个列表,在0和1的位置插入2,得到[[1,2], [2,1]] .

然后我就得到了答案。

但我有疑问:

  1. 当我重复[1] n=2次时,如果我使用[1] * 2我将得到浅拷贝。然后当我改变一个时,其他的也会改变。有没有办法获得与 use [1] * 2 相同的结果,但不是浅复制?
  2. 最好的方法是什么?

以下是我的代码,但它不起作用:

def perm(n):
res = []
if n == 1:
res = [1]
else:
s = [perm(n - 1) for i in range(n)]
s2 = [[item] for sublist in s for item in sublist]
for i in range(n):
for j in range(len(perm(n - 1))):
res.append(s2[i * len(perm(n - 1)) + j].insert(i, n))
return res

最佳答案

[[1] for i in xrange(2)]

这会起作用。创建新列表,而不仅仅是添加对现有列表的引用。

关于python - 如何编写代码来生成从 1 到 N 的排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27453023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com