Загрузка...

Номер элемента и пара списков

zip берёт первый элемент каждого списка вместе, потом второй, и останавливается, когда короткий список кончился. enumerate ставит номер рядом с именем. Если другого начала нет, номер равен 0. for шёл по одному готовому ряду. break и continue не нумеруют и не составляют пару. Здесь цикл не обрывают.

В names две строки: lida, затем guest. enumerate(names) на каждом шаге даёт номер и имя. Первый номер 0, потому что другое начало не сказано. print пишет оба в одну строку.

Нумеровать каждое имя с 0

python
names = ["lida", "guest"]
for number, name in enumerate(names):
    print(number, name)

Вы видите 0 lida, затем 1 guest. Ноль и единица не записаны внутрь names. names по-прежнему две строки. Номер живёт только этот шаг.

Начать счёт с 1

Передайте 1 вторым аргументом. enumerate(names, 1) пишет 1 lida, затем 2 guest. Порядок имён не двигается. Двигается только счёт. Не пишите второй аргумент, и снова будет 0.

zip берёт два списка и по одному элементу из каждого, в том же порядке. Первое имя lida, первый напиток water. Следующий шаг guest с tea. Номера здесь нет, пока вы отдельно не позовёте enumerate. Эта программа его не зовёт.

Ставить имя рядом с напитком

python
names = ["lida", "guest"]
drinks = ["water", "tea"]
for name, drink in zip(names, drinks):
    print(name, drink)

Вы видите lida water, затем guest tea. Пара идёт по порядку списка, не по смыслу имени. Поменяйте напитки, и пары поменяются с ними.

Короткий список кончает цикл

Оставьте в drinks только water. zip начинает с начала обоих списков, так что первый шаг lida с water. Второго напитка нет. zip его не выдумывает и ошибки не даёт. guest не посещается, и цикл кончается.

Остановиться, когда напиток кончился

python
names = ["lida", "guest"]
drinks = ["water"]
for name, drink in zip(names, drinks):
    print(name, drink)

Единственная строка lida water. guest всё ещё в names. Рядом не было напитка, поэтому этот цикл до того имени не дошёл.

Четыре вызова и что пишет каждый. Две строки enumerate различаются только началом. Две строки zip различаются только длиной drinks.

📊 Что пишет каждый вызов

Вызов Что вы видите
enumerate(names) 0 с lida, затем 1 с guest
enumerate(names, 1) 1 с lida, затем 2 с guest
zip, в drinks water затем tea lida с water, затем guest с tea
zip, в drinks только water lida с water, затем цикл кончается

Следующая страница про функцию: работу с именем, которую потом можно вызвать. Она не нумерует список и не составляет пару из двух списков.

Посчитайте до запуска

  1. names это lida, затем guest. Какие строки пишет enumerate(names)?
  2. Вы передаёте начало 1. Какая первая строка?
  3. drinks это water, затем tea. Что zip пишет вторым?
  4. В drinks только water. Пишется ли guest? Программа останавливается с ошибкой?

Где пары путаются

  • Ждать старта с 1, хотя начало не передано
  • Думать, что номер записывается обратно в список
  • Ставить lida с tea, потому что tea кажется подходящим
  • Ждать guest, когда в drinks один элемент
  • Принимать ранний конец за сбой

enumerate идёт по одному списку и добавляет номер. Без начала номер 0, затем 1: 0 с lida, затем 1 с guest. Передайте 1, и те же имена выйдут как 1 и 2.
zip идёт по двум спискам в одном шаге. Равная длина даёт lida с water, затем guest с tea. Если в drinks только water, пишется lida water и цикл кончается. guest остаётся в names, этот цикл до него не доходит.
Следующая страница даёт работе имя, чтобы вы могли её вызвать.

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

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

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

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

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

📝 Инструкции

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