python学习日记:day13------迭代器与生成器

Posted kakawith

tags:

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

一、导入
1,dir功能
print(dir([]))告诉我这个列表拥有的所有方法
 带着双下划线的方法叫做双下方法。
2,一个列表执行了_iter_()之后的返回值就是一个迭代器
3,_length_hint_元素个数
4,_setstate_从指定位置取值
5,[]._iter_()迭代器---->_next_通过next就可以从迭代器中一个一个的取值
6、迭代器中的_next_()方法 可以一个一个的获取值
二、迭代器概念
迭代器协议:内部含有_next_和 _iter_方法的就是迭代器
三、可迭代的
可迭代协议 :只要含有 _iter_方法的都是可迭代的(都能被for循环)
四、可迭代的—>迭代器
可迭代的+._iter_()方法就可以得到一个迭代器
五、for循环与迭代器
for循环就是在使用迭代器
只有是可迭代对象的时候 才能用for
当我们遇到一个新的变量,不确定能不能for循环的时候,就判断它是否可迭代。
六、迭代器的好处:
#从容器类型中一个一个的取值,会把所有的值都取到
#可以节省内存空间
    #迭代器并不会在内存中再占用一个大块内存,而是随着循环每次生成一个,每次next每次给我一个
七、生成器
1,生成器的本质是迭代器
2,生成器函数
def generator():
    print(1)
    yield a
ret =generator ()
print(ret)

只要含有yield的关键字函数都是生成器函数,且yield与return不能共用且需要写在函数内部

#只要是生成器函数:执行之后会得到一个生成器作为返回值。

def generator():
    print(1)    
    yield a
#生成器函数:执行之后会得到一个生成器作为返回值
ret = generator()
print(ret)
print(ret._next_())

 

def wahaha():
    for i in range(20000):
        yield    娃哈哈%s%i

3,监听文件的输入

def tail(filename):

  f =open(‘file‘,encoding =‘utf-8‘)
  while True:
      line = f.readline()
    if line.strip():
      yield line.strip()
g = tail (‘file‘)
for i in g:
  if ‘python‘ in i :
    print(i)

以上是关于python学习日记:day13------迭代器与生成器的主要内容,如果未能解决你的问题,请参考以下文章

python全栈学习--day13(迭代器,生成器)

python学习日记:day16-------内置函数与匿名函数

Python学习日记简单了解迭代器生成器装饰器上下文管理器

python学习日记:day11-----装饰器

python 全栈开发,Day13(迭代器,生成器)

Python基础day13