Причина obj += 1
не делает то, что вы ожидаете, так это то, что этот оператор не изменяет obj
на месте. Вместо этого он вычисляет новое значение, а переупорядочивает переменную obj
, чтобы указать на новое значение. Это означает, что содержимое списка остается неизменным.
В общем случае есть , возможно изменить список, итерации по нему с помощью for obj in myList
. Например:
myList = [[1], [2], [3], [4], [5]]
for obj in myList:
obj[0] += 1
print(myList)
Это выдает:
[[2], [3], [4], [5], [6]]
Разница между этим и вашим первым примером заключается в том, что здесь список содержит mutable объекты, а код изменяет эти объекты на месте.
Обратите внимание, что можно также написать цикл, используя понимание списка:
myList = [val+1 for val in myList]