Någon som kan förklara följande beteende för mig. Har en generator-funktion som genererar permutationer av en given lista. Jag vill skapa en lista av alla permutationer men får följande resultat.
>>> permutations = []
>>> for i in permute.permute([1,2,3]):
print i
permutations.append(i)
[3, 1, 2]
[2, 1, 3]
[1, 3, 2]
[2, 3, 1]
[1, 2, 3]
[3, 2, 1]
>>> permutations
[[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]
Permutationerna printas ut korrenkt men listan blir fel.
Postar permute-koden om det hjälper. Har själv inte skrivit koden men den verkar ju vara korrekt.
from __future__ import generators
def permute(l):
pop, insert, append = l.pop, l.insert, l.append
def halfperm():
ll = l
llen = len(ll)
if llen <= 2:
yield ll
return
aRange = range(llen)
v = pop()
for p in halfperm():
for j in aRange:
insert(j, v)
yield ll
del ll[j]
append(v)
for h in halfperm():
yield h
h.reverse()
yield h
h.reverse()
Edit: Det "löste" sig. Laddade ner koden härifrån istället.