遍历

es6----set map应用场景

倾然丶 夕夏残阳落幕 提交于 2020-02-06 19:12:49
1.数组去重 2.字符串去重 属性: Set.prototype.size :返回 Set 实例的成员总数。 Set 实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员)。下面先介绍四个操作方法。 add(value) :添加某个值,返回 Set 结构本身。 delete(value) :删除某个值,返回一个布尔值,表示删除是否成功。 has(value) :返回一个布尔值,表示该值是否为 Set 的成员。 clear() :清除所有成员,没有返回值。 遍历操作 Set 结构的实例有四个遍历方法,可以用于遍历成员。 keys() :返回键名的遍历器 values() :返回键值的遍历器 entries() :返回键值对的遍历器 forEach() :使用回调函数遍历每个成员 需要特别指出的是, Set 的遍历顺序就是插入顺序。这个特性有时非常有用,比如使用 Set 保存一个回调函数列表,调用时就能保证按照添加顺序调用。 (1) keys() , values() , entries() keys 方法、 values 方法、 entries 方法返回的都是遍历器对象 (2) forEach() Map 对象 Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。 Map方法 var myMap = new Map(); myMap.set(

LightGBM介绍及参数调优

倖福魔咒の 提交于 2020-02-06 08:07:18
1、LightGBM简介   LightGBM是一个梯度Boosting框架,使用基于决策树的学习算法。它可以说是分布式的,高效的,有以下优势:   1)更快的训练效率   2)低内存使用   3)更高的准确率   4)支持并行化学习   5)可以处理大规模数据   与常见的机器学习算法对比,速度是非常快的    2、XGboost的缺点   在讨论LightGBM时,不可避免的会提到XGboost,关于XGboost可以参考 此博文   关于XGboost的不足之处主要有:   1)每轮迭代时,都需要遍历整个训练数据多次。如果把整个训练数据装进内存则会限制训练数据的大小;如果不装进内存,反复地读写训练数据又会消耗非常大的时间。   2)预排序方法的时间和空间的消耗都很大 3、LightGBM原理   1)直方图算法   直方图算法的基本思想是先把连续的浮点特征值离散化成kk个整数,同时构造一个宽度为kk的直方图。在遍历数据的时候,根据离散化后的值作为索引在直方图中累积统计量,当遍历一次数据后,直方图累积了需要的统计量,然后根据直方图的离散值,遍历寻找最优的分割点。在XGBoost中需要遍历所有离散化的值,而在这里只要遍历kk个直方图的值。      使用直方图算法有很多优点。首先,最明显就是内存消耗的降低,直方图算法不仅不需要额外存储预排序的结果,而且可以只保存特征离散化后的值。

编译原理 -- 语法制导翻译

拜拜、爱过 提交于 2020-02-06 05:58:39
语法制导翻译 语法制导翻译是通过向一个文法的产生式附加一些规则或程序片段而得到的。 语法制导翻译的两个概念 下面是与语法制导翻译相关的两个概念: 属性 (attribute) : 表示与某个程序构造相关的量。这个属性就是我们平常所理解的 属性 ,可以是表达式的数据类型,指定数据类型的字节大小,生成的代码中的指令数目,等等等。 (语法制导的) 翻译方案 :翻译方案是一种将程序片段附加到一个文法的各个产生式上的表示法。这个程序片段就是你用来翻译这个产生式的翻译程序。将这些翻译程序的输出结果(翻译结果)按照一定的顺序组合起来,就成了最终的翻译结果。 综合属性与继承属性 综合属性 即“自底向上”求值的属性,综合属性的值是由属性值所在结点及其子结点确定的。对 (语法分析树的) 某个结点的综合属性的值只需要对 (语法分析树的) 该结点做自底向上遍历就可得到。 相对于“自底向上”求值的综合属性,编译原理里还有一种重要的“自顶向下”求值的属性,叫做 继承属性 ,继承属性的值是由属性所在结点及其父节点、兄弟结点决定的。 语法制导定义 : ① 每个文法符号和一个属性集合相关联。 ② 每个产生式和一组 语义规则 相关联。这些规则用于计算该产生式的相关属性值。 如果将语法分析树的各个结点的属性标记在语法分析树上,那么这棵语法分析树我们称之为 注释语法树 。 我们通过深度优先遍历整棵注释语法树

for each...in for...in for...of

二次信任 提交于 2020-02-06 05:17:44
for each...in 使用一个变量迭代一个对象的所有属性值,对于每一个属性值,有一个指定的语句块被执行. for each...in 是 ECMA-357 (E4X) 标准的一部分, 大部分非Mozilla浏览器都没有实现该标准, E4X并不是 ECMAScript 标准的一部分. 作为ECMA-357( E4X )标准的一部分,for each...in语句已被废弃,E4X中的大部分特性已被删除,但考虑到向后兼容,for each...in只会被禁用而不会被删除,可以使用ES6中新的 for...of 语句来代替. 语法: for each (variable in object) { statement }    参数: variable 用来遍历属性值的变量,前面的 var 关键字是可选的.该变量是函数的局部变量而不是语句块的局部变量. object 该对象的属性值会被遍历. statement 遍历属性值时执行的语句. 如果想要执行多条语句, 请用( { ... } ) 将多条语句括住. 一些对象的内置属性是无法被遍历到的,包括所有的内置方法,例如String对象的 indexOf 方法.不过,大部分的用户自定义属性都是可遍历的. 警告: 永远不要使用for each...in语句遍历数组,仅用来遍历常规对象。 for...in 以任意顺序遍历一个对象的可枚举属性

for each in for in for of

China☆狼群 提交于 2020-02-06 04:07:03
for each...in 使用一个变量迭代一个对象的所有属性值,对于每一个属性值,有一个指定的语句块被执行. for each...in 是 ECMA-357 (E4X) 标准的一部分, 大部分非Mozilla浏览器都没有实现该标准, E4X并不是 ECMAScript 标准的一部分. 作为ECMA-357( E4X )标准的一部分,for each...in语句已被废弃,E4X中的大部分特性已被删除,但考虑到向后兼容,for each...in只会被禁用而不会被删除,可以使用ES6中新的 for...of 语句来代替. 语法: 1 2 3 for each (variable in object) { statement }    参数: variable 用来遍历属性值的变量,前面的 var 关键字是可选的.该变量是函数的局部变量而不是语句块的局部变量. object 该对象的属性值会被遍历. statement 遍历属性值时执行的语句. 如果想要执行多条语句, 请用( { ... } ) 将多条语句括住. 一些对象的内置属性是无法被遍历到的,包括所有的内置方法,例如String对象的 indexOf 方法.不过,大部分的用户自定义属性都是可遍历的. 警告: 永远不要使用for each...in语句遍历数组,仅用来遍历常规对象。 for...in

1219:马走日

[亡魂溺海] 提交于 2020-02-06 03:37:21
【题目描述】 马在中国象棋以日字形规则移动。 请编写一段程序,给定n×m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点。 【输入】 第一行为整数T(T < 10),表示测试数据组数。 每一组测试数据包含一行,为四个整数,分别为棋盘的大小以及初始位置坐标n,m,x,y。(0≤x≤n-1,0≤y≤m-1, m < 10, n < 10)。 【输出】 每组测试数据包含一行,为一个整数,表示马能遍历棋盘的途径总数,0为无法遍历一次。 【输入样例】 1 5 4 0 0 【输出样例】 32 这个题目需要注意在定义函数时:这个题有结束条件 就是设置一个变量 如果变量等于x*y就说明走过一次了t++ 还要注意走过的路能再走一遍! # include <iostream> using namespace std ; int a [ 11 ] [ 11 ] = { 0 } ; int t = 0 , v = 0 ; int x , y ; int xx [ 8 ] = { - 2 , - 1 , 1 , 2 , 2 , 1 , - 1 , - 2 } ; int yy [ 8 ] = { - 1 , - 2 , - 2 , - 1 , 1 , 2 , 2 , 1 } ; void search ( int x1 , int y1 ,

简单实现数组去重

核能气质少年 提交于 2020-02-06 03:16:11
1.遍历数组法 最简单的去重方法, 实现思路 :新建一新数组,遍历传入数组,值不在新数组就加入该新数组中;注意点:判断值是否在数组的方法“indexOf”是ECMAScript5 方法,IE8以下不支持,需多写一些兼容低版本浏览器代码,源码如下: ? 1 2 3 4 5 6 7 8 9 10 11 // 最简单数组去重法 function unique1(array){ var n = []; //一个新的临时数组 //遍历当前数组 for ( var i = 0; i < array.length; i++){ //如果当前数组的第i已经保存进了临时数组,那么跳过, //否则把当前项push到临时数组里面 if (n.indexOf(array[i]) == -1) n.push(array[i]); } return n; } 2.对象键值对法 该方法执行的速度比其他任何方法都快, 就是占用的内存大一些, 实现思路 :新建一js对象以及新数组,遍历传入数组时,判断值是否为js对象的键,不是的话给对象新增该键并放入新数组。注意 点: 判断是否为js对象键时,会自动对传入的键执行“toString()”,不同的键可能会被误认为一样;例如: a[1]、a["1"] 。解决上述问题还是得调用“indexOf”。 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Java集合框架——迭代器

给你一囗甜甜゛ 提交于 2020-02-06 02:46:26
迭代器 一、查看迭代器源码 按住Ctrl键将鼠标放在ArrayList上,并点击Open Implementation(实现) 在右侧outline列表里找到 iterator() 方法 按住Ctrl键将鼠标放在Itr上,并点击Open Declaration(声明) 可以发现Itr是ArrayList的一个内部类 二、迭代器的源码分析 通过观察源码,发现迭代器对象是当前集合的内部类创建的对象,并且这个内部类实现了Iterator接口 把迭代器定义成内部类的原因:每一个种类的集合的数据结构是不一样的,遍历的过程也是不一样的,所以要根据当前集合的情况定义一个迭代器类,而不能为所有集合定义一个统一的迭代器类 三、案例实操:遍历学生对象集合 用集合存储5个学生对象,并遍历该集合 分析: ①定义学生类 ②创建集合 ③创建学生对象,并添加到集合 ④遍历:toArray,iterator //Student.java package com . collection . demo2 ; public class Student { private String name ; private int age ; public Student ( String name , int i ) { super ( ) ; this . name = name ; this . age = i ; }

tensorflow实战之数据加载进阶

老子叫甜甜 提交于 2020-02-06 00:55:29
我们知道Dataset对象能够方便的进行数据加载,而Dataset数据集一般使用流程如下: (1)创建Dataset对象; (2)对Dataset对象进行变换操作; (3)创建Dataset迭代器; (4)在会话Session中取数据。 对于(1)(2)我们已经有详细的了解,在实际使用过程中如何创建迭代器?如何进行多epoch的训练?当遍历完数据集时如何继续输入数据进行训练?另外,对于不同的数据类型如何加载,如Imagenet数据、yolo等目标检测数据,本篇将继续深入的介绍。 目录 一、Dataset对象迭代器的创建方法 总结 二、数据加载方法汇总 1、ImageNet数据 2、VOC2014数据 3、文本数据 一、Dataset对象迭代器的创建方法 make_one_shot_iterator 该迭代器只会将对应的数据遍历一次,不会多次遍历。因此,该迭代器内部自动实现了迭代器的初始化,而其他类型的迭代器需要额外的初始化。这种迭代器适用于之遍历一次整个数据集的情况,多次遍历需要其他类型的迭代器。 import tensorflow as tf import numpy as np dataset = tf.data.Dataset.from_tensor_slices(np.array([1.0, 2.0, 3.0, 4.0, 5.0])) iterator = dataset

【原】Redis基本操作

霸气de小男生 提交于 2020-02-05 13:46:44
Redis基本操作 遍历操作 Pub-Sub server Lua脚本 Redis中的这些操作都是不分大小写的。 除了针对于具体类型的具体操作。还有一些其他操作。 遍历操作 SCAN cursor [MATCH pattern] [COUNT count] SCAN、SSCAN、HSCAN、ZSCAN是遍历集合元素的命令。 SCAN:遍历选中的Redis数据库的集合,相当于全库扫描。 SSCAN:遍历Sets类型的元素。 HSCAN:遍历Hash类型及对应的value。 ZSCAN:遍历Sorted Set类型和对应的scores。 SCAN基本用法:SCAN cursor SCAN是通过游标cursor来遍历集合的,遍历开始时设置为0,如果终止server 返回0,否则,返回cusor遍历的值,该值呈上升趋势且大于0。 redis 127.0.0.1:6379> scan 0 1) "17" 2) 1) "key:12" 2) "key:8" 3) "key:4" 4) "key:14" 5) "key:16" 6) "key:17" 7) "key:15" 8) "key:10" 9) "key:3" 10) "key:7" 11) "key:1" redis 127.0.0.1:6379> scan 17 1) "0" 2) 1) "key:5" 2) "key:18" 3)