Sie sehen wie Listen-Abstraktionen aus, außer, dass sie in runde Klammern statt in eckige Klammern eingebettet sind. Ansonsten ist die Syntax gleich wie bei der "list comprehension", aber es wird ein Generator statt einer Liste zurückgeliefert.
>>> x = (x **2 for x in range(20))
>>> print(x)
<generator object <genexpr> at 0xb7307aa4>
>>> x = list(x)
>>> print(x)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361]