Ваша проблема похожа на эту:
l = [[0]] * 4
l[0][0] += 1
print l # prints "[[1], [1], [1], [1]]"
Если это так, вам просто нужно скопировать объекты при их сохранении:
import copy
l = [copy.copy(x) for x in [[0]] * 4]
l[0][0] += 1
print l # prints "[[1], [0], [0], [0]]"
Рассматриваемые объекты должны реализовывать метод __copy__
для копирования объектов. См. Документацию для copy
. Вы также можете быть заинтересованы в copy.deepcopy
, который также там.
РЕДАКТИРОВАТЬ: Вот проблема:
arrayList = []
for x in allValues:
result = model(x)
arrayList.append(wM) # appends the wM object to the list
wM.reset() # clears the wM object
Вам необходимо добавить копию:
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
Но я все еще не понимаю, откуда взялся wM
. Не будете ли вы просто копировать один и тот же объект wM
снова и снова, за исключением очистки его после первого раза, чтобы все остальное было пустым? Или model()
изменяет wM
(что звучит для меня как ужасный недостаток дизайна)? И почему ты выбрасываешь result
?