zoukankan      html  css  js  c++  java
  • 第16条:考虑用生成器来改写直接返回列表的函数

    1.验证长字符串空格

    def index_words(text):
        result = []
        if text:
            result.append(0)
        for index, letter in enumerate(text):
            if letter ==' ':
                result.append(index+1)
        return result
    # 输人一些范例值,以验证该函数能够正常运作:
    address = 'Four score and seven years ago. . .'
    result = index_words(address)
    print(result[:3])
    输出:[0, 5, 11]
    

    2.改进为iter生成器函数

    def index_words_iter(text):
        if text:
            yield 0
        for index,letter in enumerate(text):
            if letter ==' ':
                yield index + 1
    address = 'Four score and seven years ago. . .'
    result = list(index_words_iter(address))
    print(result[:3],index_words_iter(address))
    a = index_words_iter(address)
    print(next(a))
    print(next(a))
    print(next(a))
    print(next(a))
    print(next(a))
    输出:
    [0, 5, 11] <generator object index_words_iter at 0x0000000001F38A98>
    0
    5
    11
    15
    21
    

    3. 读取文件

    from itertools import islice
    def index_file(handle):
        offset = 0
        for line in handle:
            if line:
                yield offset
            for letter in line:
                offset += 1
                if letter == '':
                    yield offset
    
    with open('__init__.py','r') as f:
        it = index_file(f)
        print(it,type(it))
        results = islice(it,0,3)
        print(list(results))
    输出: 
    <generator object index_file at 0x0000000001DDBF10> <class 'generator'>
    [0, 24, 39]
    
    写入自己的博客中才能记得长久
  • 相关阅读:
    返回顶部
    判断元素在数组中
    Vue.js相关知识4-路由
    Vue.js相关知识3-路由
    Vue.js相关知识2-组件
    Vue.js相关知识1
    element表格左右滚动条在总计的上面怎么解决
    JAVA的安装及配置环境变量
    uni-app中使用vuex
    前端常用设计模式
  • 原文地址:https://www.cnblogs.com/heris/p/14737427.html
Copyright © 2011-2022 走看看