1. 程式人生 > >叠代器,生成器

叠代器,生成器

ext 一個 生成 結果 但是 blog 隱式 函數 叠代

生成器就是叠代器,能調用next()的就是叠代器。叠代器是可叠代對象,除了叠代器是,list,等也是可叠代對象,但是list等並不是叠代器,因為他不能調用next(),

可以用iter()函數將list這些轉化為叠代器。for xxx in list ,這裏有一個隱式轉化,會先將list轉為叠代器。

>>> L = [x * x for x in range(10)]

>>> L

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

>>> g = (x * x for x in range(10))

>>> g

<generator object <genexpr> at 0x104feab40>

也就是說[x for x in range(10)]是列表,(x for x in range(10))是生成器

特別的[x for x in range(10) if x>5]結果是[6,7,8,9]

叠代器,生成器