生成器就是迭代器,能调用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]