In
for element in l:
element=Dict2(element)
element
- это просто переменная, которая содержит элемент в списке. Его переназначение просто меняет то, на что смотрит element
, а не то, что содержит элемент в l oop.
Это похоже на то, как a
никогда не меняется здесь:
a = 1
element = a
element = 2
print(a, element) # 1 2
Переназначение переменной не влияет на другой код, который просматривает тот же объект.
Так почему же индексация действует так, как вы ожидаете? Поскольку индексирование изменяет сам список.
l[i]=Dict2(l[i])
На самом деле, по сути,
l.__setitem__(i, Dict2(l[i]))
Это похоже на простое переназначение, подобное первому, но на самом деле это операция с изменением, которая изменяет содержимое списка. сам.