Sto cercando di implementare un algoritmo in Python per generare tutte le permutazioni di un elenco. Ma io nel mio ciclo for desidero mantenere intatti il prefisso e le liste di riposo originali, e quindi sto cercando di fare una copia di quelle liste usando newprefix e newrest, comunque stampando il resto variabile ad ogni iterazione, vedo che anche il resto il resto variabile si modifica! Come posso creare una copia superficiale della lista in Python? O c'è un altro problema con la mia logica tentata?Come creare una copia superficiale di un elenco in Python
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'])
A meno che questo non sia per il tuo arricchimento, probabilmente dovresti usare itertools.permutations(). – dstromberg