zoukankan      html  css  js  c++  java
  • Day6.迭代器与生成器的应用

    1.迭代器的应用
    文件名:a,文件内容如下:

    apple 10 3
    tesla 100000 1
    mac 3000 2
    lenovo 30000 3
    chicken 10 3

    实现功能:cat a |grep apple
      要求1:定义迭代器函数cat
      要求2:定义迭代器函数grep
        要求3:模拟管道的功能,将cat的处理结果作为grep的输入

    #定义阶段:定义两个生成器函数
    def cat(filename):
        with open(filename,mode="r",encoding="utf8") as f:
            f.seek(0)
            while True:
                line = f.readline()
                if line:
                    yield line.strip()
                else:
                    break
    def grep(x,y):
        for line in y:
            if x in line:
                # print(line.strip())
                yield line
    #调用阶段:得到两个生成器对象
    g1=cat("a.txt")
    g2=grep("apple",g1)
    #next的触发执行g2生成器函数
    for i in g2:
        print(i) 

    2.生成器的应用
    把下述函数改成生成器的形式,执行生成器函数的到一个生成器g,然后每次g.send(url),打印页面的内容,利用g可以无限send(这个闭包函数是老师为了巩固以前知识,不使用该模板)

    def get(url):
        def index():
          return urlopen(url).read()
        return index
    from urllib.request import urlopen
    def index():
        while True:
            url = yield
            print("%s的网页源代码是: " %url)
            print(urlopen(url).read())
    g=index()
    next(g)
    g.send("http://www.baidu.com")
    g.send("http://www.python.org")
  • 相关阅读:
    桶排序
    向控件添加变量之后,类中多了什么?
    atan2&sin
    Bug(1)
    十六进制转化二进制[c]
    接口性能分析与优化
    记一次内存泄漏DUMP分析
    偏移二分查找
    iOS开发——自定义密码输入键盘
    iOS开发——手机号,密码,邮箱,身份证号,中文判断
  • 原文地址:https://www.cnblogs.com/lxyoung/p/6695472.html
Copyright © 2011-2022 走看看