Помогите понять почему так происходит

Я только начинаю изучать программирование, но всегда спотыкаюсь на этой проблеме в Python. Почему в этом случае список присваивается list[:] = new_list:

names=['name1','name2','name3','name4','name5','name6']

def print_name (list):
    for name in list:
        print(name)


def add_lastname (list):
    new_list = []
    while list:
        name = 'Last_name '+ list.pop(0)
        new_list.append(name)
    list[:] = new_list


add_lastname(names)
print_name(names)

А вот в этом случае нет list = new_list!

names=['name1','name2','name3','name4','name5','name6']

def print_name (list):
    for name in list:
        print(name)


def add_lastname (list):
    new_list = []
    while list:
        name = 'Last_name '+ list.pop(0)
        new_list.append(name)
    list = new_list


add_lastname(names)
print_name(names)

list[:] = new_list - так я функцией изменяю изначальный список list = new_list - а так не изменяю

Я же обращаюсь к списку и в том и вдругом случае, зачем ему эти [:] - ведь это же создание копии списка или я не прав?


Ответы (0 шт):