迭代器和生成器复习

初步铺垫:

for i in [1,2,3,4]:
pass

l = [1,2,3,4]

l2 = iter(l)
print(l2.__next__())
print(l2.__next__)

print(range(100)) #range(100) 就是一个生成器,为了节省内存,值不会直接输出
print(range(0,100))

#两种range取值方法:

print(list(range(100))) #通过列表
for i in range(100): #通过for循环
    print(i)
print(list(range(1,100,2))) #步长
生成器变形计划:

生成器变形计划:

一级变形:

def a():
    a = 0
    while True:
        # return a
        yield a
        a = a+1

print(a().__next__())
print(a().__next__())  #全是0,每次重新执行那个函数,这个函数就会重新执行

二级变形:

def a():
    a = 0
    while True:
        # return a
        yield a
        a = a+1

l = a()
print(l)
print(l.__next__()) #next可以递归的取值,是因为l始终指得是一个函数
print(l.__next__())
print(l.__next__())

三级变形:

def test2():
    # for i in range(1,6):
    #     yield i #冻结
    yield 1
    yield 2
    yield 3
    yield 4
    yield 5

l=test2()
print(l.__next__())
print(l.__next__())
print(l.__next__())

四级变形:(模拟range功能)

def range2():
    start = 0
    while start<10:
        yield start*4
        start += 1

for i in range2():
    print(i)

五级变形:

def range2():
    start = 0
    l = []
    while start<100:
        l.append(start*4)
        start += 1
    return l
print(range2())

六级变形:

def range3():
    start = 0
    while True:
        yield start*4
        start += 1

# print(range3())
for i in range3():
    print(i)

练习之变形计划

练习一:

"1+1+2+3+5..." #斐波那契数列

#初步:
def test():
    a,b = 1,1
    while a<10:
        c = a + b
        yield c
        a = b
        b = c
print(test())
l = test()
print(l.__next__())
print(l.__next__())
for i in l:
    print(i)

#终极:
def test4():
    a = 1
    yield a
    b = 1
    yield b
    while True:
        c = a+b
        yield c
        a = b
        b = c

l = test4()
print(l.__next__())
print(l.__next__())
print(l.__next__())
print(l.__next__())
print(l.__next__())
# for i in l:
#     print(i)

练习二:

母鸡下蛋例子

def test3():
    i = 0
    while i < 10:
        yield ‘母鸡下了个蛋,这是第%s个蛋‘%(i+1)
        i += 1

l = test3()

print(l.__next__())
print(l.__next__())
print(l.__next__())
for i in l:
    print(i)
时间: 2024-10-05 06:25:25

迭代器和生成器复习的相关文章

Python_迭代器和生成器的复习_38

迭代器和生成器 迭代器: 双下方法:很少直接调用的方法,一般情况下,是通过其他方法触发的 可迭代的协议——可迭代协议 含有__iter__ 的方法 ('__iter__' in dir(数据)) 可迭代的一定可以被for循环 迭代器协议:含有 __iter__ 和 __next__ 方法 迭代器一定可以迭代, 可迭代的通过调用 __iter__() 方法就能得到一个迭代器 迭代器的特点: 很方便的使用,一个迭代器只能从前往后,取一次 节省内存空间 生成器: 生成器的本质就是迭代器 生成器的表现形

迭代器和生成器入门

Python 迭代器生成器 迭代器.生成器这些概念名称真是让人头大,其实它们的原理特别简单.深刻. 可迭代对象(iterable) 在讲迭代器和生成器之前,必须要讲的一个概念就是可迭代对象. 可迭代对象之前需要聊一下Python中的那些内置数据结构--列表.字典.集合.元组等,这些数据结构就像一个装有内置数据的容器. 这里可以这么想--把数据想象成苹果,把列表.字典.集合.元组等想像成装苹果的袋子.盒子.篮子.筐子等装苹果的容器. 我们都能从这些容器中一个一个把所有苹果拿出来,这就像是我们经常使

Python高级特性:迭代器和生成器 -转

在Python中,很多对象都是可以通过for语句来直接遍历的,例如list.string.dict等等,这些对象都可以被称为可迭代对象.至于说哪些对象是可以被迭代访问的,就要了解一下迭代器相关的知识了. 迭代器 迭代器对象要求支持迭代器协议的对象,在Python中,支持迭代器协议就是实现对象的__iter__()和next()方法.其中__iter__()方法返回迭代器对象本身:next()方法返回容器的下一个元素,在结尾时引发StopIteration异常. __iter__()和next()

Python的迭代器和生成器

先说迭代器,对于string.list.dict.tuple等这类容器对象,使用for循环遍历是很方便的就,在后台for语句对容器对象对象调用iteration()函数,这是python的内置函数,iter()会返回一个定义next()方法的迭代器对象,它在容器中逐个访问容器内元素,next()也是python的内置函数.在没有后续元素是,调用next()会抛出一个StopIteration异常 上面说的都是python自带的容器对象,它们都实现了相应的迭代器方法,自定义类的遍历怎么实现,方法是

python——迭代器、生成器、装饰器

迭代器 迭代器规则 迭代:重复做一些事很多次,就像在循环中那样. 不仅可以对字典和序列进行迭代,还可以对其他对象进行迭代:只要该对象实现了__iter__方法. __iter__方法会返回一个迭代器(iterator),所谓的迭代器就是具有next方法(这个方法在调用时不需要任何参数)的对象.在调用next方法时,迭代器会返回他的下一个值.如果next方法被调用,但迭代器没有值可以返回,就会引发一个StopIteration异常. 注意:迭代器规则在3.0中有一些变化.在新的规则中,迭代器对象应

python高级编程之迭代器与生成器

# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #迭代器与生成器 #--------------------------------------- #迭代器基于2个方法 """ next:返回容器下一个项目 __iter__:返回迭代器本身 """ #通过内建函数和序列来创建 i=iter('abc') print i.next()#a print i.next(

python3 迭代器与生成器

pythom3 迭代器与生成器 迭代器'''迭代器是python最强大的功能之一,是访问集合元素的一种方式.迭代器是一个可以记住遍历的位置对象迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问玩结束.迭代器只能往前不会后退.迭代器有两个基本方法:iter()和next().字符串,列表或元组对象都可用于创建迭代器: ''' list=[1,2,6,3] it=iter(list)#创建迭代器对象 print(next(it))#结果1 print(next(it))#结果2 print(

Python之装饰器、迭代器和生成器

在学习python的时候,三大“名器”对没有其他语言编程经验的人来说,应该算是一个小难点,本次博客就博主自己对装饰器.迭代器和生成器理解进行解释. 为什么要使用装饰器 什么是装饰器?“装饰”从字面意思来谁就是对特定的建筑物内按照一定的思路和风格进行美化的一种行为,所谓“器”就是工具,对于python来说装饰器就是能够在不修改原始的代码情况下给其添加新的功能,比如一款软件上线之后,我们需要在不修改源代码和不修改被调用的方式的情况下还能为期添加新的功能,在python种就可以用装饰器来实现,同样在写

第四周Python--装饰器(迭代器、生成器)

---恢复内容开始--- 上节回顾: 编码:Python3中默认的是unicode,Python2中默认的是ASCII 区分:局部变量和全局变量 递归的特点: 1)规模减少 2)明确结束条件 3)效率低 函数式编程,不会有副作用,传递什么值就会有什么结果. 本节内容: 1.迭代器和生成器 2.装饰器 3.Json和Pickle序列化 4.软件目录结构规范 5.作业:ATM 1.迭代器&生成器 迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束