yield和生成器, 通过斐波那契数列学习(2.5)
实现斐波那契数列的集中方法
返回一个数
def fib(max):
n, a, b = 0, 0, 1
while n < max:
print(b)
a, b = b, a+b
n += 1 fib(5)
返回列表
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)
使用可迭代对象
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)
使用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)))
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
使用pandas读文件,类似5的操作
import pandas as pd
reader = pd.read_table('AA.csv', chunksize=1024)
for chunk in reader:
print(chunk)
使用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
```
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)
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)的更多相关文章
- python的生成器(斐波拉契数列(Fibonacci))
代码: 函数版本: #斐波拉契数列(Fibonacci) def fib(max): n=0 a,b=0,1 while n < max: a,b = b,a+b n = n+1 return ...
- Python学习基础(三)——装饰器,列表生成器,斐波那契数列
装饰器——闭包 # 装饰器 闭包 ''' 如果一个内部函数对外部(非全局)的变量进行了引用,那么内部函数被认为是闭包 闭包 = 函数块 + 定义时的函数环境 ''' def f(): x = 100 ...
- Python生成器实现斐波那契数列
比如,斐波那契数列:1,1,2,3,5,8,13,21,34.... 用列表生成式写不出来,但是我们可以用函数把它打印出来: def fib(number): n, a, b = 0, 0, 1 wh ...
- python学习笔记之斐波拉契数列学习
著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到: 1, 1, 2, 3, 5, 8, 13, 21, 34, ... 如果用Python的列表生成式, ...
- {每日一题}:四种方法实现打印feibo斐波那契数列
刚开始学Python的时候,记得经常遇到打印斐波那契数列了,今天玩玩使用四种办法打印出斐波那契数列 方法一:使用普通函数 def feibo(n): """ 打印斐波那契 ...
- JavaScript生成斐波那契数列
常规写法 https://cn.bing.com/search?q=js+fibonacci+sequence&pc=MOZI&form=MOZSBR //Fibonacci func ...
- Python(迭代器 生成器 装饰器 递归 斐波那契数列)
1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器的一大优 ...
- 斐波拉契数列(Fibonacci)--用生成器生成数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列&qu ...
- Python——通过斐波那契数列来理解生成器
一.生成器(generator) 先来看看一个简单的菲波那切数列,出第一个和第二个外,任意一个数都是由前两个数相加得到的.如:0,1,1,2,3,5,8,13...... 输入斐波那契数列前N个数: ...
随机推荐
- null-ouc 小组冲刺阶段博客目录
null-ouc Beta冲刺阶段博客目录 github:https://github.com/orgs/OUC-null/people 一.Scrum Meeting 1. [第十周会议记录](h ...
- java中常用的转义字符(转)
Java编程中往往需要一些特殊操作,例如空格,换行.或者一些你使用特殊符号的意愿与程序中特殊符号意思冲突的时候,我们不能直接写就需要把这些符号转义,表达你的本意,并与程序中特殊符号做区分,这些都需要转 ...
- API参考文档
Android 中文版:http://www.apiref.com/android-zh/index.html Bootstrap3 教程:http://www.apiref.com/bootstra ...
- Sublime text 3 3103 注册码(2016.2.9更新)
Sublime text 3 (Build 3103) license key,these all tested available on 2016/02/10 .Feel free to enjoy ...
- 用cd 命令进入和退出D盘文件夹的操作步骤。
Windows键+R打开运行 输入cmd敲回车,打开命令提示符程序. 输入“cd..”敲回车会退回到上一级目录. 输入“cd\”敲回车会直接退回到C盘根目录 在CMD程序里输入“d:”敲回车可以进入D ...
- python学习笔记:通配符之glob模块(过滤)
glob模块用来查找文件目录和文件,可以和常用的find功能进行类比.glob支持*?[]这三种通配符.返回的数据类型是list.常见的两个方法有glob.glob()和glob.iglob(),ig ...
- vue开发请求本地模拟数据的配置方法(转)
VUE开发请求本地数据的配置,早期的vue-lic下面有dev-server.js和dev-client.js两文件,请求本地数据在dev-server.js里配置,最新的vue-webpack-te ...
- yum常见问题
--> Finished Dependency Resolution Error: Multilib version problems found. This often means that ...
- spring data jpa 使用JPQL的方式查询
用Spring Data JPA提供的查询方法已经可以解决大部分的应用场景,但是对于某些业务来说,我们还需要灵活的构造查询条件,这时就可以使用@Query注解,结合JPQL的语句方式完成查询 @Que ...
- postgis常用的函数
常见函数:http://postgis.net/docs/reference.html ST_GeometryType(geometry) —— 返回几何图形的类型 ST_NDims(ge ...