#列表生成方式
[x*2 for x in range(10) ]
#生成器(generator object)
#创建生成器两种方法:
(x*2 for x in range(10) ) #第一种创建生成器方法
def gen(): #第二种创建生成器方法
count = yield 1
print(count)
yield 2
print(gen())
#生成器的方法:
next(gen()) #计算出一个值
#send () 方法可以向生成器中的yield前的一个变量传入一个参数,count = yield 1 count接收这个变量。第一次用send方法不能加任何参数,还能加入None。
#send () #gen.send(None) = =next(gen())
next(gen())
gen.send("Jay Chou")
#注意:生成器在创建的时候已经决定了能计算出值得个数,也就是决定了生成器中含有的元素个数。
#调用next的次数超过值得个数就会报StopIteration
#遍历所有元素可以使用for 循环
for i in [1,2,3]: #[1,2,3]为可迭代对象,可迭代对象都拥有iter方法与_next_方法
print i
#for 循环内部三件事: #1 调用可迭代对象的iter方法返回一个迭代器对象。 #2 调用迭代器对象的next方法 #3 处理StopIterator 异常