Загрузка...

Копирование

bag.copy() берёт значения, которые сейчас лежат в bag, и кладёт их в новый список. Сейчас в bag сначала tea, потом water, значит в новом списке тоже tea, потом water. Имя other — этот новый список. other — не bag.

До любой замены место 0 в other — это tea, место 1 — water. Длина 2. Копия — снимок этого момента. Дальше она bag не следит.

bag[0] = "soup" ставит soup вместо tea только внутри bag. other по-прежнему начинается с tea, и water остаётся на месте 1 в обоих списках. Обе длины остаются 2. Копия эту позднюю замену к себе не берёт.

soup в копию не попадает

python
bag = ["tea", "water"]
other = bag.copy()
bag[0] = "soup"

print(bag)
print(other)

Первая строка — soup, затем water. Вторая — tea, затем water. soup есть только в bag. tea по-прежнему первый в other. print пишет каждый список вместе со скобками, чтобы оба списка было видно рядом.

В другую сторону то же самое. other[1] = "bread" положил бы bread только в other. Место 1 в bag осталось бы water. Эта программа того шага не делает. Она меняет bag только после копии.

bag[:] тоже собирает новый список с теми же значениями. Это срез всего списка, и результат отделён от bag. other = bag не копирует. Оба имени — один список, поэтому поздняя замена видна под обоими именами.

📊 Три способа записать

Запись Что получается
bag.copy() новый список со значениями этого момента
bag[:] новый список с теми же значениями
other = bag не новый список; оба имени — тот один список

Имя, которое не удерживает tea

Если написать other = bag и затем bag[0] = "soup", other тоже покажет soup. Второго списка, который удержал бы tea, не было. Программа выше использует copy(), поэтому other сохраняет tea, затем water.

Следующая страница расставляет значения по порядку. Эта страница порядок не меняет. tea остаётся в other перед water, потому что таким был порядок в момент копии. soup стоит в bag первым только потому, что место 0 заменили после копии.

Что осталось отдельно

  1. Что пишет программа: первая строка, потом вторая?
  2. После программы какое первое значение в other?
  3. Если затем поставить bread на место 1 в other, что останется в bag на месте 1?
  4. Что делает other = bag такого, чего не делает copy()?

tea остаётся в копии

На экране soup, затем water, и потом tea, затем water. other по-прежнему начинается с tea. Обе длины равны 2. bread в other оставил бы water в bag на месте 1. other = bag — один список, поэтому soup был бы виден под обоими именами. bag[:] — ещё один новый список с теми же значениями. Следующая страница упорядочивает значения. Эту копию она не делает.

🧠 Проверьте Свои Знания

Готов к Началу

Проверьте Свои Знания

Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему

❓
6
Вопросы
🎯
70%
Для Прохождения
♾️
∞
Время
🔄
∞
Попытки

📝 Инструкции

  • Внимательно прочитайте каждый вопрос
  • Выберите лучший ответ на каждый вопрос
  • Вы можете пересдавать тест столько раз, сколько захотите
  • Ваш прогресс будет показан вверху