Вы обходите список users и хотите, чтобы i был индексом, а u — значением, без использования range(len(users)). Какой вариант подходит лучше всего?

Afor u in users: i = users.index(u)
Bfor i in range(len(users)): u = users[i]
Cfor i, u in enumerate(users): print(i, u)
Dfor i, u in zip(users, range(len(users))): print(i, u)
Правильный ответ. enumerate() даёт индекс и элемент в одной итерации и не требует ручной работы с индексами.

Разбор

enumerate(users) читабельнее и безопаснее, чем range(len(users)). Вариант с users.index(u) может давать неверные индексы при повторяющихся значениях и работает медленнее. Вариант с zip(users, range(len(users))) перепутает местами индекс и значение.

Проверь себя · 1/3разбор после ответа
Чему равен cnt после кода: cnt = 0; for ch in 'A12B3':; если ch.isdigit() истинно, то cnt += 1?
Тренировать Python в Telegram

Ещё вопросы по теме «Циклы и условия»