##循环对象--python 3.x
##当一个循环结构(比如for)调用循环对象时,它就会每次循环的时候调用next()方法,直到StopIteration出现,for循环接收到,就知道循环已经结束,停止调用next()
##f = open('test.txt','r')
##f.__next__()
##for line in open('test.txt'):
## print (line)
##迭代器
##循环对象转换成迭代器(iterator)。这一转换是通过使用iter()函数实现的
##生成器(generator)--构成一个用户自定义的循环对象
##生成器的编写方法和函数定义类似,只是在return的地方改为yield。
##生成器中可以有多个yield。当生成器遇到一个yield时,会暂停运行生成器,返回yield后面的值。当再次调用生成器的时候,会从刚才暂停的地方继续运行,直到下一个yield。
##生成器自身又构成一个循环器,每次循环使用一个yield返回的值
##def gen():
## a = 100
## yield a
## a = a*8
## yield a
## yield 1000
##
##for i in gen():
## print (i)
##下一个生成器
##def gen():
## for i in range(4):
## yield i
##又可以写成生成器表达式(Generator Expression)
##G = (x for x in range(4))
##表推导(list comprehension)是快速生成表的方法
##L = []
##for x in range(10):
## L.append(x**2)
##快捷的写法
L = [x**2 for x in range(10)]
print (L)
xl = [1,3,5]
yl = [9,12,13]
L = [ x**2 for (x,y) in zip(xl,yl) if y > 10]
print (L)