【笔记4】python中的yield是什么

什么是yield

原文:What does the “yield” keyword do?
译文:Python关键字yield的解释

可迭代对象(iteration)

可以利用for...in... 语句进行迭代的everything,比如列表,字符串等。

>>>mylist = [1,2,3]
>>>for i in mylist:
...     print(i)

1
2
3
>>>mylist = [x*x for x in range(3)]
>>>for i in mylist:
...     print(i)
...     print(i)

0
1
4
0
1
4

example2 有两个迭代对象,一个是range(3),一个是mylist。

生成器(Generators)

生成器也是可迭代的,但只能迭代一次,且不是所有的值都存在内存中。看起来是将()换成[] ,迭代一次之后就失效了。

>>>mygenerator = (x*x for x in range(3))
>>>for i in mygenerator:
...     print(i)
...     print(i)

0
1
4

yield

yield首先是个关键词,类似于return,返回的是个生成器。

>>> def createGenerator():
...    mylist = range(3)
...    for i in mylist:
...        yield i*i

首先 迭代列表中的三个值,然后 返回值为i*i 的生成器,大小和列表一样。

笔记

def read_input(file):
    for line in file:
        yield line.rstrip()

遇到的这个代码,首先是从文件中读取内容,然后遍历每一行,返回line.rstrip() 的值到生成器中,生成器的大小是文件的行数。

其中rstrip() 是返回该行删除 string 字符串末尾后的指定字符(默认为空格)。

str = "     this is string example....wow!!!     ";
print str.rstrip();
str = "88888888this is string example....wow!!!8888888";
print str.rstrip('8');

输出:

     this is string example....wow!!!
88888888this is string example....wow!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值