问题:在做一个Python习题,习题中要求写一个函数,函数将一个列表的所有排序给列出来,并返回以[[a,b,c],[a,c,b],...]的结果,但是我在返回处理后的结果时,结果变成[[a,b,c],[a,b,c],...]
代码如下:
#coding:utf-8
result = []
box = [0] * 3
book= [0] * 3
def permute(step):
if step > 2:
result.append(box)
return
for x in xrange(0,len(li_e)):
if book[x] == 0:
box[step] = li_e[x]
book[x] = 1
permute(step + 1)
book[x] = 0
return result
li_e = [1,2,3]
print permute(0)
我该如何修改代码?
另:是否有更好的写法呢,求指导,谢谢!
调用
result.append(box)
时的时候仅仅是把box
的引用添加进去了,result
中的所有列表其实都指向同一个地址(即全局的box
)。在更新结果的时候显式深拷贝就好了。