码迷,mamicode.com
首页 > 其他好文 > 详细

3、生成器和迭代器

时间:2021-04-29 11:59:26      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:取值   电视剧   nbsp   class   斐波那契数   ret   bre   pre   数列   

    可以用next()方法依次取值的对象称为迭代器。

    生成器是迭代器。

    列表不是迭代器,列表是可迭代对象,列表可以通过iter(list)转化为迭代器。

    一、生成器

         1、定义

x = [1,2,3,4]
y = (i for i in x)
print(type(y))
for a in y:
    print(a)
def foo(n):
    while True:
        n += 1
        yield n
f = foo(5)
print(type(f))

      2、生成器生成斐波那契数列

def foo(length):
    a,b = 0,1
    n =0
    while n < length:
        # print(b)
        yield b
        a,b = b,a+b
        n += 1
    return ‘没有更多元素了‘    
g = foo(10)
for i in g:
    print(i)

      3、生成器send方法

def foo():
    i = 0
    while i < 3:
        tmp = yield i
        print(‘tmp:‘,tmp)
        i += 1

g = foo()
n1 = g.send(None)
print(n1)
n2 = g.send(2)
print(n2)
n3 = g.send(3)
print(n3)

      4、生成器之简单协程

def task1(n):
    for i in range(n):
        print(‘正在听第{}首歌‘.format(n))
        yield None

def task2(n):
    for i in range(n):
        print(‘正在看第{}集电视剧‘.format(n))
        yield None

t1 = task1(5)
t2 = task2(5)
while True:
    try:
        t1.__next__()
        t2.__next__()
    except:
        break

  

 

3、生成器和迭代器

标签:取值   电视剧   nbsp   class   斐波那契数   ret   bre   pre   数列   

原文地址:https://www.cnblogs.com/kuangfengnulang/p/14715476.html

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