Как работает этот код? Python, iter, next
Такой код:
data = [5, 3, 2, 8, 1, 4]
odds = iter(sorted(el for el in data if el % 2))
print([next(odds) if el % 2 else el for el in data])
Он сортирует нечетные числа в списке, оставляя на месте четные.
Я посмотрел видео и почитал документацию про iter и next. Iter - создает итерируемый объект, next - берет элементы этого объекта и выводит следующий при каждом новом вызове.
А здесь выводятся сразу все объекты. Я бы от такого кода ожидал либо "1", либо "5". Но он выводит всё правильно. Я не понимаю логику того, как это происходит...
Источник: Stack Overflow на русском