Индекс Python ведет себя по-разному в зависимости от метода инициализации списка списковPython

Программы на Python
Ответить
Anonymous
 Индекс Python ведет себя по-разному в зависимости от метода инициализации списка списков

Сообщение Anonymous »

Код: Выделить всё

def add(*matrix):
nb_list = len(matrix[0])
nb_dim = len(matrix[0][0])

result = []
for i in range(nb_list):
temp = []
for j in range(nb_dim):
temp.append(0)
result.append(temp)

#result = [[0] * nb_dim] * nb_list

res_dim_index = 0
res_list_index = 0

l1 = zip(*matrix)
for l1_item in l1:
l2 = zip(*l1_item)
res_dim_index = 0
for l2_item in l2:
result[res_list_index][res_dim_index] = sum(l2_item)
res_dim_index += 1
res_list_index += 1
print(result)
return result

m1 = [[1, 2], [3, 4], [0, 0]]
m2 = [[1, 2], [3, 6], [0, 0]]
m3 = [[1, 1], [1, 1], [0, 0]]
add(m1, m2, m3)
Этот код дает ожидаемый результат

Код: Выделить всё

[[3, 5], [7, 11], [0,0]]
Если я инициализирую результат, используя закомментированный метод, результат будет отличаться от этого

Код: Выделить всё

[[0, 0], [0, 0], [0,0]]
Я не понимаю почему.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ion-method
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»