Язык программирования Python

       

Генераторное выражение


В Python 2.4 по аналогии со списковым включением появилось генераторное выражение. По синтаксису оно аналогично списковому, но вместо квадратных скобок используются круглые. Списковое включение порождает список, а, значит, можно ненароком занять очень много памяти. Генератор же, получающийся в результате применения генераторного выражения, списка не создает, он вычисляет каждое следующее значение строго по требованию (при вызове метода next()).

В следующем примере можно прочесть из файла строки, в которых производятся некоторые замены:

for line in (l.replace("- ", " - ") for l in open("input.dat")): print line

Ничто не мешает использовать итераторы и для записи в файл:

open("output.dat", "w").writelines( l.replace(" - ", " - ") for l in open("input.dat"))

Здесь для генераторного выражения не потребовалось дополнительных скобок, так как оно расположено внутри скобок вызова функции.



Содержание раздела