我有一个排列代码,我必须返回包含所有排列列表的输出列表。例如,如果我以[0,1]作为输入,则需要返回[[0,1],[1,0]]作为输出。为此,我在递归调用中将输出数组作为参数传递。这是一个好主意还是在permute中创建一个嵌套函数permute_list,该嵌套函数始终可以访问输出列表呢?只是想知道一个好的python用户应该怎么做。
import copy
def permute(l):
"""
Return a list of permutations
Examples:
permute([0, 1]) returns [ [0, 1], [1, 0] ]
Args:
l(list): list of items to be permuted
Returns:
list of permutation with each permuted item being represented by a list
"""
output = []
if len(l) == 0:
return [[]]
else:
permute_list(l,0,output)
return output
def permute_list(l,ind,output):
if ind == len(l) - 1:
a = l.copy()
output.append(a)
print(f"{output}")
for i in range(ind,len(l)):
l[ind],l[i] = l[i],l[ind]
permute_list(l,ind + 1,output)
l[i],l[ind] = l[ind],l[i]
答案 0 :(得分:0)
我尚未检查您的代码的准确性,但为了回答您的问题,output
的处理方式似乎没有问题。 output
是一个列表,考虑到在python中变量名用作对对象的引用,将其作为参数传递对堆栈长度没有影响。