实现斐波那契数列的集中方法

  1. 返回一个数

    def fib(max):
    n, a, b = 0, 0, 1
    while n < max:
    print(b)
    a, b = b, a+b
    n += 1 fib(5)
  2. 返回列表

    def fib(max):
    res = []
    n, a, b = 0, 0, 1
    while n < max:
    res.append(b)
    a, b = b, a+b
    n += 1
    return res
    fib(5)
  3. 使用可迭代对象

    from collections import Iterator
    class Fib(Iterator):
    def __init__(self, max):
    self.max = max
    self.index = 0
    self.a = 0
    self.b = 1
    def __next__(self):
    if self.index < self.max:
    res = self.b
    self.a, self.b = self.b , self.b + self.a
    self.index += 1
    return res
    else:
    raise StopIteration # StopIteration()
    def __iter__(self):
    return self for x in Fib(5):
    print(x)
  4. 使用yield 生成器

    def fib4(max):
    n, a, b = 0, 0, 1
    while n < max:
    yield b
    a, b = b, a+b
    n += 1 f = fib4(5) for i in range(6):
    print('%s: %s' % (i,next(f)))
  5. yield防止读大文件出现内存不够的问题

    def read_by_chunk(filename):
    BLOCK_SIZE = 1024
    with open(filename, 'rb') as f:
    while True:
    block = f.read(BLOCK_SIZE)
    if block:
    yield block
    else:
    return
  6. 使用pandas读文件,类似5的操作

    import pandas as pd
    reader = pd.read_table('AA.csv', chunksize=1024)
    for chunk in reader:
    print(chunk)
  7. 使用pandas读文件,运行时才制定块大小

    import pandas as pd

reader = pd.read_csv('AA.csv', sep='|', iterator=True)

while True:

try:

chunk = reader.get_chunk(5)

print(chunk)

except:

break

```

  1. yield生成斐波那契数列的迭代对象

    class Fib:
    def __init__(self, start, end):
    self.start = start
    self.end = end
    def __iter__(self):
    index, a, b = 0, 0, 1
    while index < self.start:
    a, b = b, a+b
    index += 1
    while index <= self.end:
    yield b
    a, b = b, a+b
    index += 1 for i in Fib(1,10):
    print(i)
  2. yield生成质数的迭代对象

    	class PrimeNum:
    def __init__(self, start, end):
    self.start = start
    self.end = end
    def is_prime(self, num):
    if num < 2:
    return False
    for i in range(2,num):
    if num%i == 0:
    return False
    return True
    def __iter__(self):
    for i in range(self.start, self.end):
    if self.is_prime(i):
    yield i for i in PrimeNum(1, 20):
    print(i)

注: 参考了runoob

yield和生成器, 通过斐波那契数列学习(2.5)的更多相关文章

  1. python的生成器(斐波拉契数列(Fibonacci))

    代码: 函数版本: #斐波拉契数列(Fibonacci) def fib(max): n=0 a,b=0,1 while n < max: a,b = b,a+b n = n+1 return ...

  2. Python学习基础(三)——装饰器,列表生成器,斐波那契数列

    装饰器——闭包 # 装饰器 闭包 ''' 如果一个内部函数对外部(非全局)的变量进行了引用,那么内部函数被认为是闭包 闭包 = 函数块 + 定义时的函数环境 ''' def f(): x = 100 ...

  3. Python生成器实现斐波那契数列

    比如,斐波那契数列:1,1,2,3,5,8,13,21,34.... 用列表生成式写不出来,但是我们可以用函数把它打印出来: def fib(number): n, a, b = 0, 0, 1 wh ...

  4. python学习笔记之斐波拉契数列学习

    著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到: 1, 1, 2, 3, 5, 8, 13, 21, 34, ... 如果用Python的列表生成式, ...

  5. {每日一题}:四种方法实现打印feibo斐波那契数列

    刚开始学Python的时候,记得经常遇到打印斐波那契数列了,今天玩玩使用四种办法打印出斐波那契数列 方法一:使用普通函数 def feibo(n): """ 打印斐波那契 ...

  6. JavaScript生成斐波那契数列

    常规写法 https://cn.bing.com/search?q=js+fibonacci+sequence&pc=MOZI&form=MOZSBR //Fibonacci func ...

  7. Python(迭代器 生成器 装饰器 递归 斐波那契数列)

    1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器的一大优 ...

  8. 斐波拉契数列(Fibonacci)--用生成器生成数列

    斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列&qu ...

  9. Python——通过斐波那契数列来理解生成器

    一.生成器(generator) 先来看看一个简单的菲波那切数列,出第一个和第二个外,任意一个数都是由前两个数相加得到的.如:0,1,1,2,3,5,8,13...... 输入斐波那契数列前N个数: ...

随机推荐

  1. git代码提交步骤

    常用的步骤: 1)假如本地想关联git仓库,那么先git  init,git remote add origin [git地址] 2)假如是想直接从git仓库拉下来,那么git clone [git地 ...

  2. Arrays(一)二次封装自己的数组

    一.二次封装自己的数组 目标:设计int 类型数组, (1)可以根据用户传入的容量设置数组的长度,如果用户未设置容量,默认设置长度为10(考虑使用多态性) (2)判断数组是否为空 (3)获取数组的容量 ...

  3. 《ArcGIS Runtime SDK for .NET开发笔记》--在线编辑

    介绍 ArcGIS可以发布具有编辑功能的Feature Service.利用Feature Service我们可以实现对数据的在线编辑. 数据制作参考: https://server.arcgis.c ...

  4. python自动化之函数封装

    函数最重要的目的是方便我们重复使用相同的一段程序. 将一些操作隶属于一个函数,以后你想实现相同的操作的时候,只用调用函数名就可以,而不需要重复敲所有的语句. 前面一些记录了selenium的各种API ...

  5. webpack中的url-loader

    使用url-loader引入图片,可以说它是file-loader的增强版 url-loader会把我们的图片使用base64的形式编码成另外一种字符串,网页是可以识别这种编码的东西的,这样的好处是, ...

  6. c/c++ int 范围的原因

    在C语言中, signed char 类型的范围为-128~127,每本教科书上也这么写,但是没有哪一本书上(包括老师)也不会给你为什么是-128~127,这个问题貌似看起来也很简单容易, 以至于不用 ...

  7. spring 数据库字段映射

    当有复杂名称字段时: 在repository中写代码字段名 List<Grid> findByLocIsWithin(GeoJsonPolygon boundary); 可以添加field ...

  8. git push 报错:failed to push some refs to 'git@git.xxxx:devops/thor.git'

    error: failed to push some refs to 'git@git.caicaivip.com:devops/thor.git' hint: Updates were reject ...

  9. JAVA学习之面向对象

    面向对象是相对面向过程而言面向过程:强调的是功能行为面向对象:将功能封装进对象,强调具备了功能的对象 不论面向对象还是面向过程都是一种开发思想而已.举一个例子来理解面向对象和面向过程把大象装进冰箱分三 ...

  10. UE格式化XML文件

    在UE中如何格式化xml:如果xml文件不是格式化的,应该“试图”-->“查看方式”-->“xml”:然后再“格式”-->“xml转换到回车符”.具体再要的属性,自己去摸索