首页 > 其他分享 >生成器

生成器

时间:2022-11-12 21:34:09浏览次数:41  
标签:chunk newline 生成器 pos yield buf

# 生成器函数,函数里只要有yield 关键字

def gen_func():
    yield 1
    yield 2
    yield 3


# 斐波拉契(当位数等于前两位数之和) 0 1 1 2 3 5 8
# 惰性求值 ,掩饰求值提供

# 只返回当位的值
def fib(index):
    if index <= 2:
        return 1
    else:
        return fib(index-1) +fib(index-2)

print(fib(5))

# 返回当位前面所有的值
def fib1(index):
    re_list = []
    n,a,b = 0,0,1

    while n<index:
        re_list.append(b)
        a,b = b,a+b
        n+=1
    return re_list

print(fib1(50))


# 生成器完成
def gen_fib(index):
    n, a, b = 0, 0, 1
    while n < index:
        yield b
        a, b = b, a + b
        n += 1

for data in gen_fib(10):
    print(data)


if __name__ == '__main__':
    gen = gen_func()
    for value in gen:
        print(value)

 

读大文件案例


def myreadlines(f,newline):
    # 定义一个缓存空间
    buf = ''
    while True:
        while newline in buf:
            pos = buf.index(newline)
            yield buf[:pos]
            buf = buf[pos+len(newline):]
        chunk = f.read(4096)
        
        if not chunk:
            # 说明已经读到了文件结尾
            yield buf
            break
        buf+=chunk
        
with open("input.txt") as f:
    for line in myreadlines(f,"{|}"):
        print(line)

 

标签:chunk,newline,生成器,pos,yield,buf
From: https://www.cnblogs.com/niunai/p/16884712.html

相关文章

  • 流水号生成器
    pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"......
  • 应用程序主题生成很简单!界面控件DevExtreme有现成的主题生成器
    DevExtreme拥有高性能的HTML5/JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NETCore,jQuery,Knockout等)构建交互式的Web应用程序,该套件附带功能......
  • fastposter v2.10.0 简单易用的海报生成器
    ......
  • 19个免费好用的CSS代码样式生成器工具
    整理编辑| 杨小爱CSS生成器可以帮助每个开发人员的生活变得轻松,提升工作效率,因为它可以立即实现大部分CSS效果,如阴影、边框、按钮颜色/形状等等。在本文中,我将分享19......
  • 5个可视化 CSS 网格布局生成器
    英文|https://blog.bitsrc.io/top-5-css-grid-layout-generators-f7743f0dfad2翻译|杨小二现代Web应用程序是响应式的。尽管很多CSS库和框架都支持Grid系统,但使用......
  • 逆向工程-代码生成器
    packagecom.atguigu.demo;importcom.baomidou.mybatisplus.annotation.DbType;importcom.baomidou.mybatisplus.annotation.IdType;importcom.baomidou.mybatisplus.ge......
  • 创建型模式——生成器模式
    生成器模式→建造者模式、builder一、意图生成器模式是一种创建型设计模式,使你能够分步骤创建复杂对象。该模式允许你使用相同的创建代码生成不同类型和形式的对象。......
  • SQL Father - 模拟数据生成器(后端)
    SQLFather-模拟数据生成器(后端)SQL之父项目:快速生成SQL和模拟数据,大幅提高开发测试效率!前后端全栈项目By[程序员鱼皮]制作不易,请勿商用和二次售卖!!!在线体验:http......
  • python-迭代器与生成器
    迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。迭代器有两个基本的方法:iter()和next()。字符串,列表或元组对象都可用于创建......
  • C# .Net MVC Razor 视图静态分页导航栏生成器
    这里贴出3个重要组成部分1.分页导航栏主算法代码(包括@Html扩展方法)2.HTML页面调用代码(包括导航栏样式)3.Controller控制器代码4.测试路径:http://www.****.com/EBusines......