Составление списка / генератора - это конструкция, которую вы можете использовать для создания нового списка / генератора из существующего.
Допустим, вы хотите сгенерировать список квадратов каждого числа от 1 до 10. Вы можете сделать это в Python:
>>> [x**2 for x in range(1,11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
здесь, range(1,11)
генерирует список [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
, но функция range
не является генератором до Python 3.0, и поэтому использованная мной конструкция является списком.
Если бы я хотел создать генератор, который делал бы то же самое, я мог бы сделать это так:
>>> (x**2 for x in xrange(1,11))
<generator object at 0x7f0a79273488>
В Python 3, однако, range
является генератором, поэтому результат зависит только от синтаксиса, который вы используете (квадратные или круглые скобки).