python学习随笔迭代器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习随笔迭代器相关的知识,希望对你有一定的参考价值。

1 生成一个迭代器

sex = iter([‘赵‘,‘钱‘,‘孙‘,‘李‘])    #生成迭代器
print(sex)
print(sex.__next__())           #读取迭代器内容方法 iter.__next__()
sex_1 = sex.__next__()
print(sex_1)


‘’‘
<list_iterator object at 0x000001B26572B780>
赵
钱
’‘’

2 生成器  yield

在函数中使用yield,使函数返回一个迭代器,这个函数叫生成器,yield 后面的值可以返回,yield也可以接收传递的值

#可以中断生成器函数,下次从中断处开始执行
def cash_money(amount):
    while amount > 0:
        print(‘取钱!‘)
        yield 100
        amount -=100

def cost_money():
    print(‘花完了!‘)

atm = cash_money(1000)
print(atm.__next__())
print(atm.__next__())
cost_money()
print(atm.__next__())


‘’‘
取钱!
100
取钱!
100
花完了!
取钱!
100
’‘’
import time

def customer(name):
    print("%s准备吃包子了。。。" %name)
    while True:
        baozi = yield
        print("%s吃了%s个包子。。。" %(name, baozi))

def conductor(name1):
    print("%s开始做包子了。。。" %name1)
    a = customer(‘A‘)     #用生成器函数得到一个迭代器
    b = customer(‘B‘)
    a.__next__()      #读取迭代器中内容,预备读取yield中的内容
    b.__next__()
    for i in range(10):
        time.sleep(2)
        print("第%s次做了2个包子。。。" %(i+1))
        a.send(1)    #向生成器中的yield传入值
        b.send(1)

conductor("zhu")

‘’‘
zhu开始做包子了。。。
A准备吃包子了。。。
B准备吃包子了。。。

第1次做了2个包子。。。
A吃了1个包子。。。
B吃了1个包子。。。
第2次做了2个包子。。。
A吃了1个包子。。。
B吃了1个包子。。。
第3次做了2个包子。。。
A吃了1个包子。。。
B吃了1个包子。。。
第4次做了2个包子。。。
A吃了1个包子。。。
B吃了1个包子。。。
第5次做了2个包子。。。
A吃了1个包子。。。
B吃了1个包子。。。
第6次做了2个包子。。。
A吃了1个包子。。。
B吃了1个包子。。。
第7次做了2个包子。。。
A吃了1个包子。。。
B吃了1个包子。。。
第8次做了2个包子。。。
A吃了1个包子。。。
B吃了1个包子。。。
第9次做了2个包子。。。
A吃了1个包子。。。
B吃了1个包子。。。
第10次做了2个包子。。。
A吃了1个包子。。。
B吃了1个包子。。。
’‘’

  

 

以上是关于python学习随笔迭代器的主要内容,如果未能解决你的问题,请参考以下文章

初学python随笔——列表生成器生成器和迭代器

python学习之-迭代器

python随笔

Python基础 | 深浅拷贝生成器迭代器以及装饰器详解

python学习---迭代器

python学习--迭代器和异常处理