Прежде всего, я думаю, вы должны прочитать о Итерации в python.
Просто чтобы прояснить ситуацию:
list1 = [[1, 2]]
означает у вас есть list1
, содержащий список, который содержит список [1,2]
в list1[0]
. list2 = [[[1, 2]]]
означает, что у вас есть list2
, содержащий список [[1, 2]]
.
Во-вторых, чтобы изменить значение первого элемента в списке, с [1,2]
на [88,88]
, вы можете написать:
list1 = [[1, 2]]
for item in list1:
item[0] = 88
item[1] = 88
print(list1)
output:
[[88, 88]]
Теперь давайте объясним:
Для каждой итерации для l oop переменной item
присваивается только копия значения элемента в списке, поэтому изменения, внесенные в item
, не будут отражены в списке.
Именно поэтому в вашей первой попытке (с list1
) при итерации по списку - item = [88, 88]
только изменил копию и не фактический список (здесь была копия списка [1,2]
).
Во второй попытке, т.е.:
for item in list2:
item[0] = [88, 88]
Для каждой итерации для l oop, вы получаете доступ item[0]
, который является копией ссылки на первый элемент в item
. Поэтому, когда вы присваиваете ему значение, оно изменяется в списке.