Проблема с Функциями в python

Есть код:

def show_messages(msg):
    for message in msg:
        print(message)

def send_messages(msg, sent_messages):
    for m in msg:
        print(m)
    while msg:
        x = msg.pop()
        sent_messages.append(x)
    print(msg)
    print(sent_messages)


msg = ['hello', 'how are you', 'hi']
sent_messages = []

send_messages(msg, sent_messages)
show_messages(msg)

И вот что нужно сделать:Вызовите функцию send_messages() для копии списка сообщений.После вызова функции выведите оба списка и убедитесь в том, что в исходном списке остались все сообщения. Не понимаю как это сделать.Помогите пожалуйста.


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

Автор решения: Vestalt

В python есть несколько вариантов простого копирования списка:

  1. Срез
new_list = old_list[:]
  1. Списочное выражение
new_list = [el for el in old_list]
  1. Метод copy
new_list = old_list.copy()
  1. Конструктор (Update)
new_list = list(old_list)

Результат они дают одинаковый. Можно, конечно, сделать полноценный цикл с append, но в этом нет необходимости.

Итоговый код:

def send_message(list_):
    return list_[:]


old_list = ['message 1', 'message 2', 'message 3']
new_list = send_message(old_list)
print(old_list, '\n', new_list)
→ Ссылка