python学习笔记(16)循环对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习笔记(16)循环对象相关的知识,希望对你有一定的参考价值。
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!
原链:http://www.cnblogs.com/vamei/archive/2012/07/09/2582499.html
笔记:有比较拗口的名词;表推导,生成器gen(),迭代器(作业没有很大篇幅介绍)
#第16讲 循环对象 for line in open(‘D:/pythonfiles/test.txt‘): print (line) #输出结果:按行打印 #1234 #abcd #efg #作者意思,应该是手动循环,然后循环到后面,出现stopinteration,python就认为循环执行完了 #for loop 就是自动调用了next()方法,直到stopinteratrion出现 #生成器 def gen(): a = 100 yield a a = a*8 yield a yield 1000 for i in gen(): print (i) #输出:100 #800 #1000 #gen() 跟函数定义很像,return 的时候改为 yield #可以有多个yield #gen()遇到yield 后,暂停运行生成器,返回yield后的值,再次调用的时候,会从暂停的时候继续运行,到下一个yield #生成器自身又构成一个循环器,每次loop 使用一个yield返回的值 def gen(): for i in range(4): yield i #生成器表达式 G = (x for x in range(4)) #G.next() #挨个打印元素 #python2可以用.next()实现 #python3 报错,属性错误,因为没有这个方法 next(G) #就可以顺序打出,直到报出stopinteration,loop结束 #输出 ‘‘‘ >>> next(G) 0 >>> next(G) 1 >>> next(G) 2 >>> next(G) 3 >>> next(G) Traceback (most recent call last): File "<pyshell#830>", line 1, in <module> next(G) StopIteration ‘‘‘ #表推导 l = [] #l 一个空的list for x in range(10):#循环到9,range没有上限 l.append(x**2)#l 尾部增加x平方 l #输出:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] l = [x**3 for x in range(10)] #输出:[0, 1, 8, 27, 64, 125, 216, 343, 512, 729] #作业: xl = [1,3,5] yl = [9,12,13] L = [ x**2 for (x,y) in zip(xl,yl) if y > 10] #先转化 xl = [1,3,5] yl = [9,12,13] l = [] for (x,y) in zip(xl,yl): if y >10: print (x**2) l #输出9 25 #但是不在list里面 xl = [1,3,5] yl = [9,12,13] l = [] for (x,y) in zip(xl,yl): if y >10: l.append(x**2) l #输出变了[9, 25] zip(xl,yl) #输出是(1, 9) (3, 12) (5, 13) #if 条件语句 y>10 的 对x执行平方 #y大于10 的,后两个,3 的平方,和5的平方 #所以输出应该是[9,25]
以上是关于python学习笔记(16)循环对象的主要内容,如果未能解决你的问题,请参考以下文章