迭代计算

python术语对照表

Deadly 提交于 2019-11-28 07:42:32
术语对照表 >>> 交互式终端中默认的 Python 提示符。往往会显示于能以交互方式在解释器里执行的样例代码之前。 ... 交互式终端中输入特殊代码行时默认的 Python 提示符,包括:缩进的代码块,成对的分隔符之内(圆括号、方括号、花括号或三重引号),或是指定一个装饰器之后。 2to3 一个将 Python 2.x 代码转换为 Python 3.x 代码的工具,能够处理大部分通过解析源码并遍历解析树可检测到的不兼容问题。 2to3 包含在标准库中,模块名为 lib2to3 ;并提供一个独立入口点 Tools/scripts/2to3 。参见 2to3 - 自动将 Python 2 代码转为 Python 3 代码 。 abstract base class -- 抽象基类 抽象基类简称 ABC,是对 duck-typing 的补充,它提供了一种定义接口的新方式,相比之下其他技巧例如 hasattr() 显得过于笨拙或有微妙错误(例如使用 魔术方法 )。ABC 引入了虚拟子类,这种类并非继承自其他类,但却仍能被 isinstance() 和 issubclass() 所认可;详见 abc 模块文档。Python 自带许多内置的 ABC 用于实现数据结构(在 collections.abc 模块中)、数字(在 numbers 模块中)、流(在 io 模块中)、导入查找器和加载器

集合

淺唱寂寞╮ 提交于 2019-11-28 06:23:25
集合 回顾 常用类: 1 Date 表示一个瞬间时间 Date date=new Date(); 2 Calendar类日历 Calendar calendar=Calender.getInstance(); calendar.get(Calendar.YEAR); calendar.get(Calender.MONTH); calender.set(); 3 SimpleDateFormat:实现时间和字符串之间的转换。 3.1把日期格式的字符串转成 时间对象 String s="2011-10-1"; SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd"); Date date=df.parse(s); 3.2把时间转成某种格式的字符串 // 2015/10/1 SimpleDateFormat df=new SimpleDateFormat("yyyy/MM/dd"); String s=df.format(date); 4 Math数学类 pow(a,b) a的b次方 abs();绝对值 round();四舍五入 random();随机数 0-1 sqrt(); cbrt(); ceil(); //返回大于或等于 参数的最小整数 3.4--> 4 5.0--->5 floor(); //返回小于或等于参数最大整数 2.8

Python基础之 函数初识

孤人 提交于 2019-11-28 06:11:41
1. 文件操作: 读操作: 格式:f = open("文件路径",mode = "r",encoding = "utf-8") f : 代表文件句柄 文件路径: 绝对路径:从根文件夹下查找 相对路径: 相对于某个文件进行查找 f = open("D:\Python_s25\day08\小姐姐电话号",mode="r",encoding="utf-8")# print(f.read()) # 全部读取 (1)print(f.read(3)) # 按照字符读取 (2)print(f.readline()) # 默认尾部有一个\n# (3)print(f.readline().strip()) # 读取一行# (4)print(f.readline().strip()) # 将\n去除# (5)print(f.readlines()) #一行一行读取,全部存储在列表中 读字节:rb 读取图像,视频时使用的的操作 字节操作,不能执行encoding f = open("timg.jpg",mode="rb")# print(f.read()) # 全部读取 (1) print(f.read(3)) # 按照字节读取 (2)(f.readline()) # 按照行进行读取 (3)print(f.readlines()) r 和 rb 的区别: r 需要指定encoding,rb 不需要

python中的生成器、迭代器、闭包、装饰器

佐手、 提交于 2019-11-28 05:37:34
迭代器 迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 可迭代对象 以直接作用于 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(123,Iterable) # False isinstance((x for x in range(10)),Iterable) # True 什么是迭代器 可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。 可以使用 isinstance() 判断一个对象是否是 Iterator 对象: from collections import

python学习笔记(5)--迭代器,生成器,装饰器,常用模块,序列化

∥☆過路亽.° 提交于 2019-11-28 02:59:42
生成器 在Python中,一边循环一边计算的机制,称为生成器:generator。 如: 1 >>> g = (x * x for xin range(10)) 2 >>> g3 <generator object <genexpr> at 0x1022ef630> 此处g就是一个生成器. 迭代器 我们已经知道,可以直接作用于 for 循环的数据类型有以下几种: 一类是集合数据类型,如 list 、 tuple 、 dict 、 set 、 str 等; 一类是 generator ,包括生成器和带 yield 的generator function。 这些可以直接作用于 for 循环的对象统称为可迭代对象: Iterable 。 可以使用 isinstance() 判断一个对象是否是 Iterable 对象: 1 >>> from collections import Iterable 2 >>> isinstance([], Iterable) 3 True 4 >>> isinstance({}, Iterable) 5 True 6 >>> isinstance('abc', Iterable) 7 True 8 >>> isinstance((x for x in range(10)), Iterable) 9 True 10 >>> isinstance(100,

JS数组迭代

我与影子孤独终老i 提交于 2019-11-28 01:17:11
//数组迭代方法是对每个数组进行操作 //value 当前项目值 index 索引数 array 数组本身 //为每个数组元素调用一次函数 //Array.forEach()//没有返回值,只是针对每个数组项调用指定的函数 var a = ""; var num = [1,2,3,4,5]; num.forEach(my); function my (value,index){ a + = value + "<br/>"; //调用项目值 a + = index + "<br/>"; //调用索引数 } document.write(a); ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ //map方法的作用就是将原数组按照一定的规则生成一个新的数组,不影响⚪数组。 var num = [1,2,3,4,5]; var num_ = num.map(my); function my(value){ return value * 2; //这里可以使用加减乘除 } document.write(num_); ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ //filter为"过滤"、"筛选"的意思。指数组filter后,返回过滤后的新数组。用法和参数跟map差不多。 Array.filter() var

Python中的迭代器

删除回忆录丶 提交于 2019-11-27 21:28:53
迭代器 迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退。另外,迭代器的一大优点是不要求事先准备好整个迭代过程中所有的元素。迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁。这个特点使得它特别适合用于遍历一些巨大的或是无限的集合,比如几个G的文件 特点: 访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容 不能随机访问集合中的某个值 ,只能从头到尾依次访问 访问到一半时不能往回退 便于循环比较大的数据集合,节省内存 生成一个迭代器: >>> a = iter([1,2,3,4,5]) >>> a <list_iterator object at 0x101402630> >>> a.__next__() 1 >>> a.__next__() 2 >>> a.__next__() 3 >>> a.__next__() 4 >>> a.__next__() 5 >>> a.__next__() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration 来源: https://www.cnblogs

深度学习中的优化算法总结

冷暖自知 提交于 2019-11-27 21:25:17
深度学习中的优化问题通常指的是:寻找神经网络上的一组参数θ,它能显著地降低代价函数J(θ)。针对此类问题,研究人员提出了多种优化算法,Sebastian Ruder 在《An overview of gradient descent optimizationalgorithms》(链接: https://arxiv.org/pdf/1609.04747.pdf )这篇论文中列出了常用优化算法的比较。主要优化算法有:GD、SGD、Momentum、Adagrad、Adadelta、RMSProp、Adam。 1 梯度下降法及其三个变种 1.1 BGD: Batch Gradient Descent 迭代规则: BGD(批量梯度下降,这里的批量实际上是全部数据)每次迭代采用整个训练集数据来计算损失函数J(θ)对参数θ的的梯度。 每次迭代的参数更新公式为: 优点: 由于每一步迭代使用了全部样本,因此当损失函数收敛过程比较稳定。对于凸函数可以收敛到全局最小值,对于非凸函数可以收敛到局部最小值。 缺点: 每一步更新中,都要利用 全部样本计算梯度,计算起来非常慢,遇到很大量的数据集也会非常棘手,而且不能投入新数据实时更新模型。 1.2 SGD: Stochastic Gradient Descent 迭代规则: SGD每次迭代利用每个样本计算损失函数对θ的梯度。 公式为: 优点:

L2-005. 集合相似度 STL set用法

不羁的心 提交于 2019-11-27 18:57:39
题解:又学到了c++,STL的用法了,在实验室用了两个多小时学习set,stl真的很强大,从用过的map等等体会到了,又get到了set。尽管自己很菜,还是分享一下咯,马上要参加天梯赛了,还是多想学一些东西,感谢网上博主写的博客,受益匪浅。 set概述 和vector、list不同,set、map都是关联式容器。set内部是基于红黑树实现的。插入和删除操作效率较高,因为只需要修改相关指针而不用进行数据的移动。 在进行数据删除操作后,迭代器会不会失效呢?删除set的数据时,实际的操作是删除红黑树中的一个节点,然后相关指针做相关调整。指向其他元素的迭代器还是指向原位置,并没有改变,所以删除一个节点后其他迭代器不会失效。list和map也是同样的道理。然而删除vector中的某个元素,vector中其他迭代器会失效,因为vector是基于数组的,删除一个元素后,后面的元素会往前移动,所以指向后面元素的迭代器会失效。 再稍微说一下迭代器的实现。迭代器是一个对象,vector的迭代器是封装了数组下标;list、map、set的迭代器是封装了元素节点的指针。 还有一点,从数学层面,set的一个集合,好比一个袋子里面装了好多个小球。但是红黑树是一种特殊的二叉搜索树,set中的元素根据其值的大小在红黑树中有特定的位置,是不可移动的。所以,1是search操作效率会很高O(log n)

并发集合类 ConcurrentHashMap 和 CopyOnWriteArrayList

孤街浪徒 提交于 2019-11-27 18:41:22
在Java类库中出现的第一个关联的集合类是Hashtable,它是JDK 1.0的一部分。Hashtable提供了一种易于使用的、线程安全的、关联的map功能,这当然也是方便的。然而,线程安全性是凭代价换来的――Hashtable的所有方法都是同步的。此时,无竞争的同步会导致可观的性能代价。Hashtable的后继者HashMap是作为JDK1.2中的集合框架的一部分出现的,它通过提供一个不同步的基类和一个同步的包装器Collections.synchronizedMap,解决了线程安全性问题。通过将基本的功能从线程安全性中分离开来,Collections.synchronizedMap允许需要同步的用户可以拥有同步,而不需要同步的用户则不必为同步付出代价。 Hashtable和synchronizedMap所采取的获得同步的简单方法(同步Hashtable中或者同步的Map包装器对象中的每个方法)有两个主要的不足。首先,这种方法对于可伸缩性是一种障碍,因为一次只能有一个线程可以访问hash表。同时,这样仍不足以提供真正的线程安全性,许多公用的混合操作仍然需要额外的同步。虽然诸如get()和put()之类的简单操作可以在不需要额外同步的情况下安全地完成,但还是有一些公用的操作序列,例如迭代或者put-if-absent(空则放入),需要外部的同步,以避免数据争用。