gpt4 book ai didi

python - 在 python 中使用递归查找列表 int 的排列时考虑索引?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:04:59 24 4
gpt4 key购买 nike

我正在尝试使用递归查找特定范围内整数列表的所有排列。例如,如果 lst = [0,1,2],则调用 def permute(lst, 0, 1) 应该返回 [[0, 1], [1,0]] 格式。同样,调用 permute(lst, 0, 2) 应该返回 [[0,1,2], [0,2,1]...]

到目前为止,我的代码只能找到整个列表的排列,从索引 0 到 len(lst):

def permute(lst, low, high):
if low == high:
print(lst)
for index in range(low, high + 1):
lst[index], lst[low] = lst[low], lst[index]
permute(lst, low + 1, high)
lst[index], lst[low] = lst[low], lst[index]

其中 low = 0highlen(lst)

如果我更改这段代码中的索引,我不会得到正确的输出。关于如何考虑指数的任何建议?

最佳答案

您可以使用内部递归函数来执行此操作,例如:

def permute(lst, start, end):
def permutations(l):
if len(l) <= 1:
return [l]
a = []
for p in permutations(l[:-1]):
for i in range(len(l)):
a.append(p[i:] + [l[-1]] + p[:i])
return a
return permutations(lst[start:end+1])

In []
lst = [0,1,2,3,4]
permute(lst, 0, 1)

Out[]:
[[0, 1], [1, 0]]

In []
permute(lst, 0, 2)

Out[]:
[[0, 1, 2], [1, 2, 0], [2, 0, 1], [1, 0, 2], [0, 2, 1], [2, 1, 0]]

关于python - 在 python 中使用递归查找列表 int 的排列时考虑索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46701491/

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