生成器表示式
可以使用類似於類似理解的語法建立生成器迭代器。
generator = (i * 2 for i in range(3))
next(generator) # 0
next(generator) # 2
next(generator) # 4
next(generator) # raises StopIteration
如果函式不一定需要傳遞給列表,則可以通過在函式呼叫中放置生成器表示式來儲存字元(並提高可讀性)。函式呼叫的括號隱式地使表示式成為生成器表示式。
sum(i ** 2 for i in range(4)) # 0^2 + 1^2 + 2^2 + 3^2 = 0 + 1 + 4 + 9 = 14
此外,你將節省記憶體,因為生成器允許 Python 根據需要使用值,而不是載入你正在迭代的整個列表(在上面的示例中為 [0, 1, 2, 3]
)。