Czy Twój problem podobny do tego:
l = [[0]] * 4
l[0][0] += 1
print l # prints "[[1], [1], [1], [1]]"
Jeżeli tak, wystarczy skopiować obiekty kiedy je przechowywać:
import copy
l = [copy.copy(x) for x in [[0]] * 4]
l[0][0] += 1
print l # prints "[[1], [0], [0], [0]]"
Obiekty te powinny wdrożyć __copy__
metoda kopiowania obiektów. Zobacz dokumentację dla copy
. Możesz być także zainteresowany copy.deepcopy
, który również tam jest.
EDIT: Tutaj jest problem:
arrayList = []
for x in allValues:
result = model(x)
arrayList.append(wM) # appends the wM object to the list
wM.reset() # clears the wM object
Musisz dołączyć kopię:
import copy
arrayList = []
for x in allValues:
result = model(x)
arrayList.append(copy.copy(wM)) # appends a copy to the list
wM.reset() # clears the wM object
ale nadal jestem mylić, gdzie wM
pochodzi. Czy po prostu nie będziesz po prostu kopiował tego samego obiektu wM
, z wyjątkiem usuwania go po pierwszym czasie, aby cała reszta była pusta? Lub czy model()
modyfikuje wM
(co brzmi jak straszna wada projektowa do mnie)? I dlaczego wyrzucasz result
?
Nie rozumiem problemu. Pomocny może być prosty kod pokazujący, co dzieje się źle. –
Co to jest "lista tablic"? "Lista"? –
tak, jest to lista. – Lilz