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)循环对象的主要内容,如果未能解决你的问题,请参考以下文章

python学习笔记

Python学习笔记十五:循环对象

python学习笔记

python 学习笔记(循环,print的几种写法,操作符)

python学习笔记DAY16(面向对象编程)

学习笔记33具有Python特色的循环