Próbuję zaimplementować algorytm w Pythonie, aby wygenerować wszystkie Permutacje na liście. Ale w mojej pętli for chcę zachować pierwotny prefiks i listę reszty nienaruszoną, dlatego próbuję utworzyć kopię tych list za pomocą newprefix i newrest, jednak przy drukowaniu zmiennej reszta przy każdej iteracji, widzę, że nawet zmienny odpoczynek jest modyfikowany! Jak utworzyć płytką kopię listy w Pythonie? Czy jest jeszcze inny problem z moją próbą logiki?Jak zrobić płytką kopię listy w Pythonie
def perm(prefix, rest):
if len(rest) == 0:
print prefix
for i in range(len(rest)):
#prints in the for loop are just for debugging
print "rest:", rest
print "i=", i
newprefix = prefix
newprefix.append(rest[i])
newrest = rest
newrest.pop(i)
print "old pre : ", prefix
print "newpre=", newprefix
print "newrest=", newrest
perm(newprefix, newrest)
perm([], ['a','b','c'])
Jeśli nie jest to przeznaczone dla twojego własnego wzbogacenia, prawdopodobnie powinieneś użyć itertools.permutations(). – dstromberg