码迷,mamicode.com
首页 > 编程语言 > 详细

python学习笔记(16)循环对象

时间:2017-10-18 19:57:59      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:运行   错误   应该   报错   arch   自动调用   for   list   files   

作者: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)循环对象

标签:运行   错误   应该   报错   arch   自动调用   for   list   files   

原文地址:http://www.cnblogs.com/liyihao/p/7688224.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!