迭代计算

Prototype之详细解说[转]

江枫思渺然 提交于 2019-11-26 11:54:12
/* Prototype JavaScript framework, version 1.4.0 * (c) 2005 Sam Stephenson <sam@conio.net> * * Prototype is freely distributable under the terms of an MIT-style license. * For details, see the Prototype web site: http://prototype.conio.net/ * 这是一个JavaScript的框架,致力于简化动态的Web开发,完全按照面对对象的思想 * 进行Javascript开发,添加了迭代器的概念增强Javascript的设计能力。 * Prototype框架构思独特充满了技巧性的代码,方便易用的工具类! * /*-------------------------------------------------------------------------- */ /* 【Prototype】定义一个全局对象,提供一个全局的基本信息和工具 */ var Prototype = { Version: ' 1.4.0 ' , // 可以作为版本检测用 // 用于脚本检测的正则表达式,经常使用所以放在这里起到全局常量的作用 ScriptFragment: ' (?

python itertools

痞子三分冷 提交于 2019-11-26 10:58:32
转载至: https://www.cnblogs.com/haiyan123/p/9804091.html 1、介绍 itertools 是python的迭代器模块,itertools提供的工具相当高效且节省内存。 使用这些工具,你将能够创建自己定制的迭代器用于高效率的循环。 - 无限迭代器  itertools包自带了三个可以无限迭代的迭代器。这意味着,当你使用他们时,你要知道要的到底是最终会停止的迭代器,还是需要无限地迭代鞋去。 (1)count(初值=0, 步长=1) :count 迭代器会返回从传入的起始参数开始的均匀间隔的数值。count 也可以接收指定的步长参数。我们来看一个简单的例子: >>> from itertools import count >>> for i in count(10): #从10开始无限循环 ... if i > 20: ... break ... else: ... print(i) ... 10 11 12 13 14 15 16 17 18 19 20 (2)islice(count(10), 5) :从 10 开始,输出 5 个元素后结束。islice 的第二个参数控制何时停止迭代。但其含义并不是”达到数字 5 时停止“,而是”当迭代了 5 次之后停止“。 >>> from itertools import islice >>>

Javascript 性能优化

一个人想着一个人 提交于 2019-11-26 08:59:26
Javascript最初是解释型语言,现在,主流浏览器内置的Javascript引擎基本上都实现了Javascript的编译执行,即使如此,我们仍需要优化自己写的Javascript代码,以获得最佳性能。 注意作用域 避免全局作用域 在之前的文章 Javascript 变量、作用域和内存问题 提到过,由于访问变量需要在作用域链上进行查找,相比于局部变量,访问全局变量的开销更大,因此以下代码: var person = { name: "Sue", hobbies: ["Yoga", "Jogging"] }; function hobby() { for(let i=0; i<person.hobbies.length; i++) { console.log(person.hobbies[i]); } } 可以进行如下优化: function hobby() { let hobbies = person.hobbies; for(let i=0; i<hobbies.length; i++) { console.log(hobbies[i]); } } 把需要频繁访问的全局变量赋值到局部变量中,可以减小查找深度,进而优化性能。 当然,上述优化过的代码仍然有不足的地方,后面的部分会提到。 避免使用 with 为什么避免使用 with ? with 并不是必须的

【论文阅读&mdash;遗传算法】Multi-Thresholding Image Segmentation Using Genetic Algorithm

房东的猫 提交于 2019-11-26 06:46:35
论文题目:Multi-Thresholding Image Segmentation Using Genetic Algorithm(遗传算法多阈值图像分割) 一、综述 作者使用遗传算法对多对象和背景的图像进行分割。 二、研究内容与方法 (1)介绍 图像分割的准确率受预处理结果影响较大。 作者结合多阈值分割和遗传算法,通过寻找阈值,将阈值问题转换成优化问题。最大化目标与背景之间的方差,最小化目标自身的背景像素间的方差。 (2)图像阈值 由于灰度图像处理简单,因此一般将彩色图像转换为灰度图像进行预处理。最常用的灰度级为256(0-255)。 图像阈值是一种用在灰度图上的分割方法。该方法旨在寻找一个合适的阈值,将背景和目标对象分隔开来,像素值低于阈值为背景,否则为目标对象。 基于阈值的算法通常被分为单极阈值和多级阈值。通常若图像中包含n个对象和背景,则定义n 个阈值。 如何寻找适合分割的阈值:将彩色图像转换成灰度图,绘制图像的一维直方图,直观显示具有相同灰度级的像素个数。二分类只有一个阈值,尝试所有0—L-1的数,找到划分最好的那个值作为阈值;多分类需要找到多个阈值,那么如何寻找拥有好的性能的多组阈值是接下来要做的。 (3)遗传算法 遗传算法是一种模仿基因的元启发式算法,当不存在一个确定的方法或着确定的方法计算复杂时可以用该算法做最优近似。 遗传算法具有N个种群,则初始值为N个随机解

pyhton中的迭代器,生成器及函数式编程

匆匆过客 提交于 2019-11-26 03:59:18
函数定义与调用 #python中如何函数无返回值, 默认返回None; def 函数名(形参) 函数体 return 返回值 函数名(实参) #打印返回值 print 函数名 #定义了一个函数 def fun(*args): # 形式参数 print args #调用函数 fun("python", 12, 0) # 实参 #必选参数 #默认参数 #可变参数----> *args args是元组类型 #关键字参数----->**kwargs kwargs是字典类型 函数的形式参数的默认值不要是可变参数; def add_end(L=[]): # 默认参数 L = [1,2,3] L.append('END') # [1,2,3, 'END'] return L # return [1,2,3, 'END'] print add_end([1, 2, 3]) print add_end() print add_end() print add_end() 测试结果: 参数组合时: 必选 > 默认参数 > 可变参数 > 关键字参数 def fun(a, b=0, *c, **d): print a, b, c, d fun(1, 2, 4, 5, 6, 7, c=3, x=2, z=2) 测试结果: 测试练习:利用函数定义用户管理系统 #!/usr/bin/env python

Python入门篇(八)之迭代器和生成器

邮差的信 提交于 2019-11-26 01:35:02
迭代器和生成器 1、列表生成式 列表生成式即 List Comprehensions ,是 Python 内置的非常简单却强大的可以用来创建 list 的生成式。 举个例子,要生成 list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 可以用 list(range(1, 11)) : >>> list(range(1, 11)) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 但如果要生成 [1x1, 2x2, 3x3, ..., 10x10] 怎么做?方法一是循环: >>> L = []` >>> for x in range(1, 11): ... L.append(x * x) ... >>> L [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] 但是循环太繁琐,而列表生成式则可以用一行语句代替循环生成上面的 list : >>> [x * x for x in range(1, 11)] [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] 写列表生成式时,把要生成的元素 x * x 放到前面,后面跟 for 循环,就可以把 list 创建出来,十分有用,多写几次,很快就可以熟悉这种语法。 for循环 后面还可以加上 if判断 ,这样我们就可以筛选出仅偶数的平方: >>> [x * x

Python-基础-常用术语对照表

浪子不回头ぞ 提交于 2019-11-25 23:20:38
下面内容主要摘抄自 python 官网, https://docs.python.org/3.7/glossary.html#glossary ,部分内容有删减。 2to3 一个将 Python 2.x 代码转换为 Python 3.x 代码的工具,能够处理大部分通过解析源码并遍历解析树可检测到的不兼容问题。 2to3 包含在标准库中,模块名为 lib2to3;并提供一个独立入口点 Tools/scripts/2to3。参见 2to3 - 自动将 Python 2 代码转为 Python 3 代码。 因为官方将在2020年不再支持 Python 2.x, 在遇到没有 Python 2.X 版本 的code 的时候,可以尝试使用这个工具将代码转化成Python 的版本。 abstract base class -- 抽象基类 抽象基类简称 ABC,是对 duck-typing 的补充,它提供了一种定义接口的新方式,相比之下其他技巧例如 hasattr() 显得过于笨拙或有微妙错误(例如使用 魔术方法)。ABC 引入了虚拟子类,这种类并非继承自其他类,但却仍能被 isinstance() 和 issubclass() 所认可;详见 abc 模块文档。 Python 自带许多内置的 ABC 用于实现数据结构(在 collections.abc 模块中)、数字(在 numbers 模块中)

访问图像的三种方法

倾然丶 夕夏残阳落幕 提交于 2019-11-25 22:34:00
方法一:用指针访问像素 利用c语言中的操作符[],这种方法最快,但是略有些抽象。实验条件下单次运行时间为0.00665378 方法二:用迭代器操作像素 这种方法与STL库的用法类似,在迭代法中,我们所需要的就是获得图像矩阵的begin和end,然后增加迭代直至从begin到end。将*操作符添加在迭代指针前,即可访问当前只想的内容。 方法三:动态地址计算 使用动态地址运算配合at方法。 来源: https://www.cnblogs.com/shuguomeifuguo/p/11930695.html

递归与迭代

别说谁变了你拦得住时间么 提交于 2019-11-25 18:50:42
迭代的计算模型是pipeline; 每一步计算都会生成后继计算的充分上下文(输入)。 递归计算是future模型: 每一步计算都需要后继计算生成计算上下文。 两者的区别是计算间的依赖关系不同:一个是依赖过去,一个是依赖将来。 来源: https://www.cnblogs.com/feng9exe/p/11929311.html