У меня странное поведение из цикла for в python. Проблема заключается не в точности это один, но очень похоже на:Как изменить этот питон для цикла?
a = []
b = [1,2,3,4]
for i in xrange (0,10):
a.append(b)
b[3] += 1
И результат:
a = [[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14]]
В результате я жду это
a = [[1,2,3,4],[1,2,3,5],[1,2,3,6],[1,2,3,7],.....,[1,2,3,14]]
Я не знаю, почему на каждой итерации b [3] добавляется до 14, а затем список [1,2,3,14] добавляется к a. Я думаю, что b [3] должно увеличиваться только на 1 на каждой итерации
Это происходит потому, что вы присоединяя ссылки на '' b' к Ā' на каждой итерации цикла, а не на копию 'b'. Каждая ссылка указывает на тот же 'b', который в конце вашего цикла имеет' b [3] = 14'. – Chris
Попробуйте вставить код в [этот визуализатор кода python] (http://people.csail.mit.edu/pgbovine/python/tutor.html#mode=edit), чтобы увидеть, что именно происходит. –
Так как я могу это исправить? – cuongptnk