numbers = range(10)
squares = (x * x for x in range(10))
fours = (x * x for x in squares)
zip(squares, fours)
Что выведет код?
Результатом будет "[(0, 1), (4, 81), (16, 625), (36, 2401), (64, 6561)]"
Разгадка в том, что питоновские генераторы не «ленивые списки», а
одноразовые генераторы.
Обычно случай повторного использования генератора сразу детектится — т.к. на второй раз он возвращает пустую последовательность, но в данном случае пустая последовательность не возвращается, т.к. генератор читается «дважды» параллельно by zip.
Also:
sandersn.com/blog//index.php/2009/06/29/python_s_i...