迭代计算

python 之迭代器

孤街醉人 提交于 2019-12-19 12:55:59
我们已经知道,可以直接作用于 for 循环的数据类型有以下几种: 一类是集合数据类型,如 list 、 tuple 、 dict 、 set 、 str 等; 一类是 generator ,包括生成器和带 yield 的generator function。 这些可以直接作用于 for 循环的对象统称为可迭代对象: Iterable 。 可以使用 isinstance() 判断一个对象是否是 Iterable 对象: >>> from collections import Iterable >>> isinstance([], Iterable) True >>> isinstance({}, Iterable) True >>> isinstance('abc', Iterable) True >>> isinstance((x for x in range(10)), Iterable) True >>> isinstance(100, Iterable) False 而生成器不但可以作用于 for 循环,还可以被 next() 函数不断调用并返回下一个值,直到最后抛出 StopIteration 错误表示无法继续返回下一个值了。 可以被 next() 函数调用并不断返回下一个值的对象称为迭代器: Iterator 。 可以使用 isinstance() 判断一个对象是否是

C#中的IEnumerable接口深入研究

人盡茶涼 提交于 2019-12-18 12:41:38
C#和VB.NET中的LINQ提供了一种与SQL查询类似的“对象查询”语言,对于熟悉SQL语言的人来说除了可以提供类似关联、分组查询的功能外,还能获取编译时检查和Intellisense的支持,使用Entity Framework更是能够自动为对象实体的查询生成SQL语句,所以很受大中型信息系统设计者的青睐。 IEnumerable这个接口可以说是为了这个特性“量身定制”,再加上微软提供的扩展(Extension)方法和Lambda表达式,给开发者带来了无穷的便利。本人在最近的开发工作中使用了大量的这种特性,同时在调试过程中还遇到了一个小问题,那么正好趁此机会好好研究一下相关原理和实现。 先从一个现实的例子开始吧。假如我们要做一个商品检索功能(这只是一个例子,我当然不可能把公司的产品业务也在这里贴出来),其中有一个检索条件是可以指定厂家的名称并进行模糊匹配。厂家的包括两个名称:注册名称和一般性名称,我们只按一般性名称进行检索。当然你可以说直接用SQL查询就行了,但是我们的系统是以实体对象为核心进行设计的,厂家的数量也不会太多,大概1000条。为了不增加系统的复杂性,只考虑使用现有的数据访问层接口进行实现(按过滤条件获取商品,以及获取所有厂商),这时LINQ的便捷性就体现出来了。 借助IEnumerable接口和其辅助类,我们可以写出以下代码: public

第六周学习总结

 ̄綄美尐妖づ 提交于 2019-12-18 01:08:28
这个星期主要内容如下: 迭代器(Iterator)是一个对象,它的工作是遍历并选择序列中的对象,它提供了一种访问一个容器(container)对象中的各个元素,而又不必暴露该对象内部细节的方法。 (1) 每种容器类型都定义了自己的迭代器类型,如vector: vector<int>::iterator iter;这条语句定义了一个名为iter的变量,它的数据类型是由vector<int>定义的iterator类型。 1) 正向迭代器,定义方法如下: 容器类名::iterator 迭代器名; 2) 常量正向迭代器,定义方法如下: 容器类名::const_iterator 迭代器名; 3) 反向迭代器,定义方法如下: 容器类名::reverse_iterator 迭代器名; 4) 常量反向迭代器,定义方法如下: 容器类名::const_reverse_iterator 迭代器名; (2) 使用迭代器读取vector中的每一个元素: vector<int> ivec(10,1); for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();++iter) { *iter=2; //使用 * 访问迭代器所指向的元素 } vector<int>::const_iterator 和 const vector<int>:

论文笔记之:Dynamic Label Propagation for Semi-supervised Multi-class Multi-label Classification ICCV 2013

邮差的信 提交于 2019-12-17 00:23:10
   Dynamic Label Propagation for Semi-supervised Multi-class Multi-label Classification ICCV 2013   在基于Graph的半监督学习方法中,分类的精度高度依赖于可用的有标签数据 和 相似性度量的精度。此处,本文提出一种半监督的 multi-class and multi-label 分类机制,Dynamic Label Propagation(DLP),是在一个动态的过程中传递,执行 transductive learning。现有的半监督方法一般都很难处理多标签/多分类问题,因为缺乏考虑标签的关系;本文所提出的方法重点强调动态度量和标签信息的融合。       监督的度量学习方法 经常学习马氏距离(Mahalanobis distance),努力缩小相同标签之间的距离,与此同时,尽可能保持或者拉大不同标签图像的距离。 基于Graph的监督学习框架 利用少量的有标签信息去挖掘大量的无标签数据的信息。 Label Propagation 具体的认为在一个Graph中通过信息传递,有较大相似性的由边链接的点趋于拥有相同的标签。另外一种类型的办监督学习方法, 协同训练(Co-training) ,利用多视角特征来相互帮助,拉进无标签数据来重新训练并且增强分类器(by pulling out

C++ Primer (一)

二次信任 提交于 2019-12-16 14:24:58
Google C++ Style Guide 书籍:C++ Primer,C++标准程序库,Effective C++,C++ concurrency in Action, Linux多线程服务端编程,The Design and Evolution of C++ C++基础: 1. 读取数量不定的输入数据 while(std::cin >> value) while内返回其左侧运算符,即std:cin, IO库定义了从istream向bool转换的规则,当istream作为条件时,效果是这个流的状态,有效输入(未遇到错误),条件为真,无效输入(读到文件尾,不是value变量类型), 条件为假 键盘输入文件结束符,unix Ctrl+D 2. C++是静态数据类型的语言,它的类型检查发生在编译时,编译器必须知道程序中每一个变量对应的数据类型 3. 避免依赖于实现环境的行为,比如不同机器上int类型的尺寸可能是不一样的 4. 切勿混用带符号类型和无符号类型,计算前带符号数会自动转换为无符号数,如果计算结果为负数会出现错误 5. 'A' 表示单独字符,"A" 表示字符数组A,编译器会在字符数组末尾添加空字符'\0' 6. 列表初始化,如果丢失精度,编译器会报错 7. 内置类型变量在函数内(包括main),如果不初始化是未初始化值,在所有函数外面,如果不初始化会采用默认初始化

深度学习基础问题

独自空忆成欢 提交于 2019-12-14 04:44:36
文章目录 基础 1. 常见的梯度下降方法及优缺点——优化器 梯度下降的推导 Momentum——优化器 指数加权移动平均 Nesterov动量 Adagrad——优化器 Adadelta——优化器 RMSprop——优化器 Adam——优化器 2. dropout原理以及为什么能用于防止过拟合? 3. 为什么需要Normalization 4.[Batch Normalization的理解](https://zh.gluon.ai/chapter_convolutional-neural-networks/batch-norm.html) 5. BN的前向传播和反向传播公式 6. BN的使用场景 7. BN和Dropout共同使用时会出现的问题 8. LN的作用 9. [梯度消失与梯度膨胀,以及6种解决措施](https://blog.csdn.net/qq_25737169/article/details/78847691) 10. 为什么神经网络参数不能全部初始化为全0 一、神经网络基础和前馈神经网络 1、激活函数的比较 2、神经网络结构哪几种?各自都有什么特点? 3、前馈神经网络叫做多层感知机是否合适? 4、前馈神经网络怎么划分层? 5、如何理解通用近似定理? 6、怎么理解前馈神经网络中的反向传播?具体计算流程是怎样的? 7、在深度学习中,网络层数增多会伴随哪些问题,怎么解决

高性能编程论述

元气小坏坏 提交于 2019-12-13 19:48:04
高性能编程 前言 首先说一下我为什么要写这篇博客。因为 面试 有提到这个,我当时直接说不懂(一方面当时心态很差,另一方面面试官的询问方式令我很反感。所以直接refuse了。小伙伴们千万别学我)。 所以,打算谈一谈我对Java高性能编程方面的认识与总结。 首先,高性能编程不涉及架构层次。所以打算通过这篇文章,来了解架构提升系统性能的小伙伴要失望了。我将Java高性能编程主要分为编码与网络两个部分(说白了,只关注编码,不提其它)。 其次,我们需要了解何为高性能。性能往往与系统的吞吐量,响应时间,并发量等息息相关。只有了解到这点,我们才可以对症下药。 网络部分:BIO,NIO,Netty等,这部分在之前的《 从BIO到Netty的演变 》有所提及,这里不再赘述。 而编码部分,也是最多人关注的部分。我将它按层次分为: 数据结构(如String,StringBuffer,StringBuilder) 语言特性(如for循环的JIT优化,并行流等) 算法(如分治算法,贪心算法等) 设计模式(如原型模式) 多线程(包括线程池,锁等) 扩展-特定机制(其实就是一些成熟的方案) 并发容器被归类到多线程中,而Fork/Join框架被归类到特定机制(当然,也可以归类到算法,多线程等。取决于看待它的角度)。 由于这其中每个分支,拆分出来都是很大的一块内容。所以这篇文章的目标只是给个方向而已

Java高性能编程论述

不想你离开。 提交于 2019-12-13 12:45:10
高性能编程 前言 首先说一下我为什么要写这篇博客。因为面试有提到这个,我当时直接说不懂(一方面当时心态很差,另一方面面试官的询问方式令我很反感。所以直接refuse了。小伙伴们千万别学我)。 所以,打算谈一谈我对Java高性能编程方面的认识与总结。 首先,高性能编程不涉及架构层次。所以打算通过这篇文章,来了解架构提升系统性能的小伙伴要失望了。我将Java高性能编程主要分为编码与网络两个部分(说白了,只关注编码,不提其它)。 其次,我们需要了解何为高性能。性能往往与系统的吞吐量,响应时间,并发量等息息相关。只有了解到这点,我们才可以对症下药。 网络部分:BIO,NIO,Netty等,这部分在之前的《 从BIO到Netty的演变 》有所提及,这里不再赘述。 而编码部分,也是最多人关注的部分。我将它按层次分为: 数据结构(如String,StringBuffer,StringBuilder) 语言特性(如for循环的JIT优化,并行流等) 算法(如分治算法,贪心算法等) 设计模式(如原型模式) 多线程(包括线程池,锁等) 扩展-特定机制(其实就是一些成熟的方案) 并发容器被归类到多线程中,而Fork/Join框架被归类到特定机制(当然,也可以归类到算法,多线程等。取决于看待它的角度)。 由于这其中每个分支,拆分出来都是很大的一块内容。所以这篇文章的目标只是给个方向而已,不会写得非常深入。

详解Python迭代器,生成器,装饰器

南笙酒味 提交于 2019-12-13 12:42:25
文章目录 迭代器 生成器 装饰器 迭代器 简介:迭代器是python里面可以记住遍历位置的对象,迭代器只能往前不能往后,使用iter()创建一个迭代器,使用next()返回一个迭代器里面的元素。 应用场景:数列的数据规模巨大,或者数列有规律,但是通过列表推导式推导不出来 #!/usr/local/bin/python3 import sys it = iter ( [ 1 , 32 , 43 , 2 ] ) while True : try : print ( next ( it ) ) except StopIteration : sys . exit ( ) 参考: 廖雪峰的迭代器教程 菜鸟教程:迭代器与生成器 Tyson Lee的博客:详解高阶函数,闭包,装饰器 生成器 简介:在python里面使用了yield的函数称为生成器,生成器返回一个迭代器,在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。调用一个生成器函数,返回的是一个迭代器对象 应用场景: 列表所有数据都在内存中,如果有海量数据的话将会非常耗内存。 如:仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。 如果列表元素按照某种算法推算出来

峰创时代|高性能编程

梦想与她 提交于 2019-12-13 11:18:33
高性能编程 前言 首先说一下我为什么要写这篇博客。因为面试有提到这个,我当时直接说不懂(一方面当时心态很差,另一方面面试官的询问方式令我很反感。所以直接refuse了。小伙伴们千万别学我)。 所以,打算谈一谈我对Java高性能编程方面的认识与总结。 首先,高性能编程不涉及架构层次。所以打算通过这篇文章,来了解架构提升系统性能的小伙伴要失望了。我将Java高性能编程主要分为编码与网络两个部分(说白了,只关注编码,不提其它)。 其次,我们需要了解何为高性能。性能往往与系统的吞吐量,响应时间,并发量等息息相关。只有了解到这点,我们才可以对症下药。 网络部分:BIO,NIO,Netty等,这部分在之前的《从BIO到Netty的演变》有所提及,这里不再赘述。 而编码部分,也是最多人关注的部分。我将它按层次分为: 数据结构(如String,StringBuffer,StringBuilder) 语言特性(如for循环的JIT优化,并行流等) 算法(如分治算法,贪心算法等) 设计模式(如原型模式) 多线程(包括线程池,锁等) 扩展-特定机制(其实就是一些成熟的方案) 并发容器被归类到多线程中,而Fork/Join框架被归类到特定机制(当然,也可以归类到算法,多线程等。取决于看待它的角度)。 由于这其中每个分支,拆分出来都是很大的一块内容。所以这篇文章的目标只是给个方向而已,不会写得非常深入。 一