python中基础知识之迭代器

一,迭代器简述

是一个迭代取值的工具,使用迭代器,让每次重复过程。并且每次结果都是基于上次结果上的。

迭代器

           优点:迭代器不依赖索引取值,不占用过多的内存空间

           缺点:取值麻烦,必须依次一个一个取值,不能倒着取,取完为止,如果没有监测异常,否则取完值就会报错

                                

二,可迭代对象与迭代器对象

1,可迭代对象:是在数据类型中调用内置功能时,内置方法中有'__iter__'的,都为可迭代对象。

                      可迭代对象不一定是迭代器对象

#常用的数据类型中有以下几种为可迭代对象:
#都可调用__iter__
str      #字符串
list     #列表
tupl     #元组
dict     #字典
set      #集合
file     #文件   本身就是迭代器对象 

2,迭代器对象:可迭代对象执行__iter__方法取到的值就是迭代器对象。

                     有内置方法__iter__和__next__。

                     迭代器对象一定是可迭代对象

d = {'x':1,'y':2}      #这个为可迭代对象
iter_d = d.__iter__  # iter_d 这个就是迭代器对象
print(iter_d.__next__) #迭代取值

  

三,生成器对象

生成器对象本质上就是自定义的一个迭代器对象。

在函数体内有yield,再调用函数时,不会执行体内的代码,拿到的返回值就是一个生成器对象。

在函数体内由yield来返回一个或多个值,但函数体运行只是暂停,在该语句后,并不结束函数体.(普通函数是由return来返回一个或多个值的,且函数运行结束)

def chicken():
        print('>>>>:第一次')
        yield 1
        print('>>>>:sencond')
        yield 2

obj = chicken()
res = obj.__next__
print(res)            

四,生成器表达式:

当数据类型比较大的时候,就采用生成器表达式来做一个生成器。方便取值

l = (i for i in range(19999))
print(next(l))

  

 五,面向过程编程思想:

面向过程编程思想:基于面向过程编程就相当于在设计一条流水线生产零件一样,方式比较机械化。

                              优点:复杂的问题流程化,进而简单化。

                              缺点:可扩展性较差。

                              用于扩展性要求低的场景。

六,涉及到的题目

def multipliers():
    return [lambda x: i*x for i in range(4)]
print([m(2) for m in multipliers()])  # [6,6,6,6]
原文地址:https://www.cnblogs.com/wujc3/p/11189435.html