Я выполняю упражнение № 9 из http://openbookproject.net/thinkcs/python/english2e/ch09.html и столкнулся с чем-то бесполезным.
В упражнении предлагается использовать copy.deepcopy()
, чтобы упростить мою задачу, но я не понимаю, как это могло быть.
def add_row(matrix):
"""
>>> m = [[0, 0], [0, 0]]
>>> add_row(m)
[[0, 0], [0, 0], [0, 0]]
>>> n = [[3, 2, 5], [1, 4, 7]]
>>> add_row(n)
[[3, 2, 5], [1, 4, 7], [0, 0, 0]]
>>> n
[[3, 2, 5], [1, 4, 7]]
"""
import copy
# final = copy.deepcopy(matrix) # first way
final = matrix[:] # second way
li = []
for i in range(len(matrix[0])):
li.append(0)
# return final.append(li) # why doesn't this work?
final.append(li) # but this does
return final
Я запутался, почему книга предлагает использовать deepcopy()
, когда простой list[:]
копирует его. Я использую это неправильно? Моя функция полностью вышла из строя?
У меня также есть некоторая путаница с возвратом значений. вопрос в документах в коде выше.
ТИА