Как правильно использовать enumerate и zip в Python
Новички часто переносят привычки из других языков в Python. Самый частый пример это циклы.
❌ Как пишет новичок:
Если нужно получить элемент списка И его индекс:
names = ["Анна", "Борис", "Олег"]
# Стиль C/Java
for i in range(len(names)):
print(f"{i}: {names[i]}")
Это работает, но выглядит громоздко и не "по-питоньи".
✅ 1. Используем enumerate
Эта функция сразу выдает и счетчик, и само значение. Код становится чище!
for i, name in enumerate(names, start=1):
print(f"{i}: {name}")
💡 Фишка: Аргумент start=1 позволяет начать нумерацию не с нуля, а с единицы (полезно для вывода списков пользователю).
❌ Как пишет новичок:
Если нужно пройтись сразу по двум спискам (имена и зарплаты):
salaries = [100, 200, 300]
for i in range(len(names)):
print(f"{names[i]} получает {salaries[i]}")
✅ 2. Используем zip
Функция zip (молния 🤐) "сшивает" несколько списков в один, как застежка.
for name, salary in zip(names, salaries):
print(f"{name} получает {salary}")
⚠️ Важно: Если списки разной длины, zip остановится, когда закончится самый короткий из них. Остальные "хвосты" будут отброшены (если не использовать zip_longest из itertools).
Подписывайтесь на канал 👉 @python_of