arr

数组扁平化

会有一股神秘感。 提交于 2019-11-30 19:06:23
数组扁平化就是把这样的数组   [ 1,3,4,[ 4,5,[ 6,7 ] ] ]   变成 [ 1,2,3,4,5,6,7 ]这样 var arr = [ 1,3,4,[ 4,5 , [ 6,7 ] ] ]; function flattenArray( arr ) { var _arr = []; for( let i = 0 ; i< arr.length ; i++ ){ if( ! Array.isArray(arr[i]) ){ _arr.push(arr[i]); }else{ _arr = _arr.concat(flattenArray(arr[i])); } } return _arr; } var newArr = flattenArray(arr); console.log(newArr);    来源: https://www.cnblogs.com/lilei-site/p/11636537.html

python数据分析(三) python numpy--数组--运算,切片和索引

耗尽温柔 提交于 2019-11-30 18:51:49
Numpy数组的运算: numpy数组最大的特点是任何运算,都会自动的对数组当中的所有变量进行运算,所以千万不要试图自己去使用循环去取数组当中的值进行运算(非常愚蠢)。 1.相同大小的数组之间的运算 数组可以不编写循环而对数据执行批量运算,称之为矢量化,大小相同数组之间的算术运算将会应用到元素级。 In [51]: arr = np.array([[1., 2., 3.], [4., 5., 6.]]) In [52]: arr Out[52]: array([[ 1.,2.,3.], [ 4.,5.,6.]]) In [53]: arr * arr Out[53]: array([[1.,4.,9.], [ 16.,25.,36.]]) In [54]: arr - arr Out[54]: array([[ 0.,0.,0.], [ 0.,0.,0.]]) 2.大小不同的数组之间的运算 大小不同的数组之间的运算叫做广播,本教程暂时不涉及该内容。 3.标量与数组之间的运算 数组与标量值之间的运算,会将标量值传播到各个元素 In [55]: 1 / arr Out[55]: array([[ 1.,0.5,0.3333], [ 0.25,0.2,0.1667]]) In [56]: arr ** 0.5 Out[56]: array([[ 1.,1.4142,1.7321], [

【leetcode&CN&竞赛】1196.How Many Apples Can You Put into the Basket

非 Y 不嫁゛ 提交于 2019-11-30 17:53:28
题目如下: 楼下水果店正在促销,你打算买些苹果, arr[i] 表示第 i 个苹果的单位重量。 你有一个购物袋,最多可以装 5000 单位重量的东西,算一算,最多可以往购物袋里装入多少苹果。 示例 1: 输入:arr = [100,200,150,1000] 输出:4 解释:所有 4 个苹果都可以装进去,因为它们的重量之和为 1450。 示例 2: 输入:arr = [900,950,800,1000,700,800] 输出:5 解释:6 个苹果的总重量超过了 5000,所以我们只能从中任选 5 个。 解题思路: 排好序后,从小的装起。 代码如下: class Solution(object): def maxNumberOfApples(self, arr): """ :type arr: List[int] :rtype: int """ arr.sort() count = 0 for i in range(len(arr)): count += arr[i] if count > 5000: return i return len(arr) 来源: https://www.cnblogs.com/seyjs/p/11596790.html

《利用python进行数据分析》之numpy

怎甘沉沦 提交于 2019-11-30 16:53:29
/*--> */ /*--> */ /*--> */ /*--> */ /*--> */ /*--> */ /*--> */ /*--> */ 在NumPy中使用numpy.string_类型作字符串数据时要小心,因为numpy会修正它的大小或删除输入而不发出警告。 ¶ numpy数组的切片是原数组的视图,对视图的修改会反映到原数组,想要拷贝时需要显示复制ndarray[:].copy()。区别于使用布尔值索引时,总是生成数据的拷贝 ¶ 切片里只有一个冒号时切出来的数据是一维的,arr[2,:] ¶ In [1]: import numpy as np from functools import partial println = partial(print,sep="\n"+"*"*50+"\n") In [2]: arr = np.random.randn(7) * 5 remainder, whole_part = np.modf(arr) println(arr,remainder,whole_part) [ 3.43229669 -5.86140048 -6.59627105 -3.89258116 -0.2048788 1.86099143 -9.50394027] ************************************************** [

js 记录几个因惯性思维引发的代码BUG,开发思维方式的自我反省

不羁的心 提交于 2019-11-30 16:29:42
壹 ❀ 引 在写这篇文章之前,对于取什么标题其实让我纠结了好几天,这篇文章中我想说的东西与引用类型数据有关,也与我们的惯性思维有关。本文中展示的几段代码都非常简单,原型都来自于我的日常开发,但让你立刻回答出正确答案可能还需要一点时间,不妨一起来看看吧。 贰 ❀ 测试环节 题目一: let getName = (name) => { return name; }; let person = { name: getName('听风是风') }; getName('echo'); console.log(person);//? 开发中初始化工作总是必不可少的,初始化数据,变量都是非常常见的操作。现在我需要初始化一个对象,而这个对象的值是一个被调用函数;于是在后面的程序中我需要更新这个对象,顺手再次调用了这个函数,那么请问此时这个对象能被更新吗? 答案是并不会更新,其实仔细想想这怎么可能被会更新呢。但在开发中,因为引用类型数据保存是存放 value 的指针,这让我有了一种函数被再次调用return的值被刷新,于是 person对象 也被更新的错觉,听着挺蠢,可是我不严谨的惯性思维却真的写出了这样的代码,并调试了好一会BUG。 题目二: let arr = [{ id: 1, name: '听风是风' }, { id: 2, name: '时间跳跃' }]; arr.forEach(

学习笔记之Array.prototype.map()方法

依然范特西╮ 提交于 2019-11-30 16:06:22
Array.prototype.map() 作用: 它会把调用这个方法的数组(arr)中的每一个元素逐个作为参数传递给你所指定的回调函数(callback)中,并且将得到的结果按顺序逐个的放在一个数组中作为返回值返回 (因此不会改变原数组的值) 语法: var arr = arr.map(function callback(currentValue, index, array) { // 具体的代码 }[, thisArg]) 参数: currentValue : 当前值,即本次循环中从数组里传递给函数中的参数 index:[可选参数] 当前值在调用这个方法的数组中对应对的索引值 array:[可选参数] 原数组,即调用这个方法的数组 thisArg:[可选参数] 执行 callback 函数时使用的this值。 详细参见MDN: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/map 以上内容参照MDN并加以个人理解 示例代码: var arr = [1,2,3,4,5]; // 初始化一个数组 arr.map(function getSquare(currentValue){ return currentValue * currentValue; })

54-数组源码分析

蓝咒 提交于 2019-11-30 15:45:47
PHP中经常使用数组,使用数组最大的好处便是速度!读写都可以在O(1)内完成,因为它每个元素的大小都是一致的,只要知道下标,便可以瞬间计算出其对应的元素在内存中的位置,从而直接取出或者写入。那么内核中是如何实现的呢? PHP大部分功能,都是通过HashTable来实现,其中就包括数组。HashTable即具有双向链表的优点,同时具有能与数据匹敌的操作性能。PHP中的定义的变量保存在一个符号表里,而这个符号表其实就是一个HashTable,它的每一个元素都是一个zval*类型的变量。不仅如此,保存用户定义的函数、类、资源等的容器都是以HashTable的形式在内核中实现的。 下面分别来看在PHP、内核中如何定义数组。 PHP中定义数组: <?php $array = array(); $array["key"] = "values"; ?> 在内核中使用宏来实现: zval* array; array_init(array); add_assoc_string(array, "key", "value", 1); 将上述代码中的宏展开: zval* array; ALLOC_INIT_ZVAL(array); Z_TYPE_P(array) = IS_ARRAY; HashTable *h; ALLOC_HASHTABLE(h); Z_ARRVAL_P(array)=h; zend

54-数组源码分析

ⅰ亾dé卋堺 提交于 2019-11-30 15:45:47
PHP中经常使用数组,使用数组最大的好处便是速度!读写都可以在O(1)内完成,因为它每个元素的大小都是一致的,只要知道下标,便可以瞬间计算出其对应的元素在内存中的位置,从而直接取出或者写入。那么内核中是如何实现的呢? PHP大部分功能,都是通过HashTable来实现,其中就包括数组。HashTable即具有双向链表的优点,同时具有能与数据匹敌的操作性能。PHP中的定义的变量保存在一个符号表里,而这个符号表其实就是一个HashTable,它的每一个元素都是一个zval*类型的变量。不仅如此,保存用户定义的函数、类、资源等的容器都是以HashTable的形式在内核中实现的。 下面分别来看在PHP、内核中如何定义数组。 PHP中定义数组: <?php $array = array(); $array["key"] = "values"; ?> 在内核中使用宏来实现: zval* array; array_init(array); add_assoc_string(array, "key", "value", 1); 将上述代码中的宏展开: zval* array; ALLOC_INIT_ZVAL(array); Z_TYPE_P(array) = IS_ARRAY; HashTable *h; ALLOC_HASHTABLE(h); Z_ARRVAL_P(array)=h; zend

排序算法(第三弹)归并排序和基数(桶)排序

耗尽温柔 提交于 2019-11-30 15:08:50
归并排序 排序动图演示 整体效果: 排序细节: 排序原理: 归并排序就是递归得将原始数组递归对半分隔,直到不能再分(只剩下一个元素)后,开始从最小的数组向上归并排序 1. 向上归并排序的时候,需要一个暂存数组用来排序, 2. 将待合并的两个数组,从第一位开始比较,小的放到暂存数组,指针向后移, 3. 直到一个数组空,这时,不用判断哪个数组空了,直接将两个数组剩下的元素追加到暂存数组里, 4. 再将暂存数组排序后的元素放到原数组里,两个数组合成一个,这一趟结束。 我的代码实现: 1 package cn.ftf.mysort; 2 3 import java.util.Arrays; 4 5 public class MyMergeSort { 6 //完善参数,外部调用 7 public static int[] mergeSort(int[] arr) { 8 int [] temp=new int[arr.length]; 9 arr=mergeSort1(arr,0,arr.length-1,temp); 10 return arr; 11 } 12 //分+治 13 private static int[] mergeSort1(int[] arr,int left,int right,int[] temp) { 14 if(left<right) { 15 int mid

构造函数、原型和继承

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-30 15:05:27
element.insertAdjacentHTML(position, text); 可以读取字符串里面的标签 创建对象方式 字面量创建 构造函数 new Object() 自定义构造函数 1、构造函数和原型 声明式函数的使用方式不同决定其为构造函数还是普通函数 通过 new 来使用的声明式函数式构造函数 new在执行时做的四件事 在内存中创建一个新的空对象。 让this指向这个新的对象。 执行构造函数里面的代码,给这个新对象添加属性和方法。 返回这个新对象(所以构造函数里面不需要return)。 2、构造函数和原型 构造函数是一种特殊的函数,主要用来初始化对象,即为对象成员变量变量赋初始值,它总与new一起用。 new在执行时做的4件事情 在内存空间开辟一片空间 让this指向这个空间 执行构造函数里面的代码,给新对象添加属性和方法 返回这个对象 3、构造函数原型对象 prototype 原型对象就是一个属性,是构造函数的属性,prototype也称为原型对象 作用:共享方法,节省内存 4、对象原型 proto 只读属性 每一个对象都有一个原型,作用是指向原型对象prototype 5、constructor构造函数 主要作用可以指回原来的构造函数 // 使用对象方式添加方法要 // 给设置一个指路的不然就都覆盖了,找不到构造函数了 6、原型链 作用:提供一个成员查找机制