Я нашел проблему с «загадкой», когда я пытаюсь заполнить список в цикле «за».Python append in loop working mystery
Вот пример:
>>> params = [1,2,3,4,5]
>>> el = {'param':0}
>>> el
{'param': 0}
>>> list = []
>>> for param in params:
... el['param'] = param
... list.append(el)
...
>>> print(list)
[{'param': 5}, {'param': 5}, {'param': 5}, {'param': 5}, {'param': 5}]
>>>
Но я думаю, что результат должен быть
>>> print(list)
[{'param': 1}, {'param': 2}, {'param': 3}, {'param': 4}, {'param': 5}]
>>>
Как решить эту проблему? И почему реальный результат не похож на результат моего ума?
Ваш результат верный. 'el' - это словарь, который все время обновляется по параметру value. Вы также сохраняете ** ссылку ** на этот словарь в списке, следовательно, результат –
Читать [этот вопрос] (http://stackoverflow.com/questions/986006/how-do-i-pass-a- переменный по ссылке). – Zenadix