arr

一文搞懂Python中的所有数组数据类型

冷暖自知 提交于 2019-11-28 19:30:50
关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android、Python、Java和Go,这个也是我们团队的主要技术栈。 Github: https://github.com/hylinux1024 微信公众号:终身开发者(angrycode) 数组类型是各种编程语言中基本的数组结构了,本文来盘点下 Python 中各种“数组”类型的实现。 list tuple array.array str bytes bytearray 其实把以上类型都说成是数组是不准确的。这里把数组当作一个广义的概念,即把列表、序列、数组都当作 array-like 数据类型来理解。 **注意本文所有代码都是在 Python3.7 中跑的^_^** 0x00 可变的动态列表list list 应该是 Python 最常用到的数组类型了。它的特点是 可变的、能动态扩容,可存储 Python 中的一切对象,使用时不用指定存储的元素的类型 。 使用非常简单 >>> arr = ["one","two","three"] >>> arr[0] 'one' # 动态扩容 >>> arr.append(4) >>> arr ['one', 'two', 'three', 4] # 删除一个元素 >>> del arr[2] >>> arr ['one', 'two',

经典的几种排序

依然范特西╮ 提交于 2019-11-28 18:43:34
1.冒泡排序 public void mpsort(int[]arr) { for (int i=0;i<arr.length;i++) { for (int j=0;j<arr.length-1-i;j++) { if (arr[j]>arr[j+1]) { int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=arr[j]; } } } } 2.插入排序 public void crsort(int[] arr) { for(int i=1;i<arr.length;i++) { int temp=arr[i]; int left=i-1; while (left>=0&&arr[left]>temp) { arr[left+1]=arr[left]; left--; } arr[left+1]=temp; } } 3.选择排序 public void xzsort(int[] arr) { for (int i=0;i<arr.length;i++) { int temp=i; for (int j=i+1;j<arr.length;j++) { if (arr[temp]<arr[j]) { temp=j; } } int l=arr[temp]; arr[temp]=arr[i]; arr[temp]=l; } } 4.快速排序

攻防世界 maze NJUPT CTF 2017

天涯浪子 提交于 2019-11-28 18:34:51
迷宫题 1 __int64 __fastcall main(__int64 a1, char **a2, char **a3) 2 { 3 signed __int64 mid_i; // rbx 4 signed int mid_str; // eax 5 bool v5; // bp 6 bool v6; // al 7 const char *v7; // rdi 8 __int64 arr; // [rsp+0h] [rbp-28h] 9 10 arr = 0LL; 11 puts("Input flag:"); 12 scanf("%s", &s1, 0LL); 13 if ( strlen(&s1) != 24 || strncmp(&s1, "nctf{", 5uLL) || *(&byte_6010BF + 24) != '}' )// 输入24位,前5位为ntcf{ 第24位是} 14 { 15 LABEL_22: 16 puts("Wrong flag!"); 17 exit(-1); 18 } 19 mid_i = 5LL; 20 if ( strlen(&s1) - 1 > 5 ) 21 { 22 while ( 1 ) 23 { 24 mid_str = *(&s1 + mid_i); // 从输入的第5位开始 25 v5 = 0; 26 if ( mid

数组的相关操作—方法及索引

点点圈 提交于 2019-11-28 18:02:11
最近学习了诸多数组的方法以及数组的索引,因此对其进行一个系统的整理 数组的索引 // 索引: var arr = ["hello",true,"world",2,5,"abc"]; console.log(arr) //["hello", true, "world", 2, 5, "abc"] console.log(arr.length) // 6 // 增: console.log(arr[0]) //hello console.log(arr[arr.length-1]) //abc console.log(arr[arr.length]) //undefined arr[arr.length] = "hahahah"; console.log(arr[10]) //undefined arr[10] = "heiheihie" console.log(arr) //["hello",true,"world",2,5,"abc","hahahah",empty × 3,"heiheihie"] console.log(arr[7]) //undefined console.log(arr[8]) //undefined console.log(arr[9]) //undefined // 删: console.log(arr.length) //11 arr.length =

冒泡排序--JavaScript描述

我是研究僧i 提交于 2019-11-28 16:37:50
  相信凡是编程入门的都接触过冒泡排序算法,排序算法在编程中经常用到。 1. code 1 /** 2 * 冒泡排序 3 * 1、比较的轮数等于总数 - 1 4 * 2、比较次数等于要比较的个数 - 1 5 * --比较从第一个到最后一个 6 * --每一轮比较完得到一个最终值、不参与下一次比较 7 * 8 * */ 9 10 /** 11 * 最大时间复杂度 O(n^2) 12 * 空间复杂度 O(1) 13 * */ 14 var arr = [10, 0, 100, 20, 60, 30]; 15 var temp; 16 /** 17 * 从大到小 18 * **/ 19 /* 控制循环比较的轮数 */ 20 for (var i = 0; i < arr.length - 1; i++) { 21 /* 控制每一轮比较的次数 */ 22 for (var j = 0; j < arr.length - 1 - i; j++) { 23 if(arr[j] < arr[j + 1]){ 24 temp = arr[j]; 25 arr[j] = arr[j + 1]; 26 arr[j + 1] = temp; 27 } 28 } 29 } 30 // alert(arr); 31 console.log("从小到大 :" + arr); 32 /** 33 * 从小到大

scala基础

自古美人都是妖i 提交于 2019-11-28 16:31:05
Scala的简介 大数据中使用Scala编写的两大框架就是kafka和Spark 1. 官方网站: https://www.scala-lang.org/ 2.特点 1.即是面向对象编程又是编写函数编程(函数可以独立于对象独自存在,不必非要在对象中) 2.和Java一样是运行在JVM之上的高级语言(.scala文件进行编译===》.class文件===》运行在JVM上) 3.scala版本不兼容性(各个版本之间是不兼容的:2.11.x 2.10.x 2.9.x 各个版本之间不兼容) 4.交互式命令行:可以像Python那样在Linux中一命令行的形式执行命令 3.Scala的下载地址 https://www.scala-lang.org/download/all.html 4 IDEA 下载 https://www.jetbrains.com/idea scala变量,基本类型 1.变量的声明 1.Scala中的变量必须要用var或者val进行声明   val修饰的变量的值不可变(官方推荐使用val进行声明)   var修饰的变量的值可变   使用var和val声明变量的时候可以省略变量的数据类型(Scala可以根据变量的值自动判断变量的数据类型) 2.Scala中没有return这个关键字:   Scala中表达式(方法或者函数)的最后一行值就是表达式的返回值,没有返回值的时候

关于reduce

ぃ、小莉子 提交于 2019-11-28 15:18:37
arr.reduce( callback,[initialValue]) reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素 callback (执行数组中每个值的函数,包含四个参数) 1、previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue)) 2、currentValue (数组中当前被处理的元素) 3、index (当前元素在数组中的索引) 4、array (调用 reduce 的数组) initialValue (作为第一次调用 callback 的第一个参数。)如果没有提供initialValue,reduce 会从索引1的地方开始执行例如下面两串代码 var arr = [1, 2, 3, 4]; var sum = arr.reduce(function(prev, cur, index, arr) { console.log(prev, cur, index); return prev + cur; }) console.log(arr, sum);打印结果:1 2 13 3 26 4 3[1, 2, 3, 4] 10 var arr = [1, 2, 3, 4]; var sum = arr.reduce(function(prev, cur, index, arr) {

程序员那些必须掌握的排序算法(上)

我是研究僧i 提交于 2019-11-28 15:02:10
现在的IT行业并不像以前那么好混了,从业人员过多,导致初级程序员过剩,这也间接导致了公司的招聘门槛越来越高,要求程序员掌握的知识也越来越多。 算法也是一个争论了很久的话题,程序员到底该不该掌握算法?不同的人有不同的答案,而事实上,很多公司都对算法有一定的要求,有些公司直接在面试的时候便会要求面试者手写算法题。这就对程序员的技术要求产生了很大的考验,所以面对如今的大环境,我们必须掌握算法,才能在今后的工作中占据一席之地。 那么接下来,我就简单介绍一下几个排序算法,希望对你们有所帮助。 1.冒泡排序 冒泡排序(Bubble Sort),是一种较简单的排序算法。 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。 这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。 演示: 代码如下: @Test public void bubbleSort() { int[] arr = { 3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48 }; // 统计比较次数 int count =

类数组转化为真正的数组

巧了我就是萌 提交于 2019-11-28 13:55:25
引言 开发过程中,有很多时候获取到的是类似数组的对象。比如元素的集合(elementcollection,nodeList,以及今天开发时发现classList也是类数组)。有时我们需要类数组去调用数组的方法,怎么办? 办法一 遍历类数组,将类数组里面的元素依次放入一个新的数组 类数组本身虽然不是数组,但是有interator接口,所以可遍历。(interator指可遍历、可迭代) let foo = { 0 : 1, 1 : 2, 2 : 3, length : 3 } let arr = []; for(let item of foo){ arr.push(item) } 办法二 使用 es6 中 Array.from()方法转换 let foo = { 0 : 1, 1 : 2, 2 : 3, length : 3 } let arr = Array.from(foo) 办法三 使用 apply 和 call apply方法的第二个参数是数组,也可以是类数组,在调用的时候会将第二个参数依次展开。 let foo = { 0 : 1, 1 : 2, 2 : 3, length : 3 } // apply let arr = [].concat.apply([],foo) // call let arr = Array.prototype.slice.call(foo)

JS中数组的操作

╄→尐↘猪︶ㄣ 提交于 2019-11-28 13:52:46
1、数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度 var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); 创建一个数组并赋值 要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,注意:这时长度会随之改变。 2、数组的元素的访问 var testGetArrValue=arrayObj[1]; //获取数组的元素值 arrayObj[1]= "这是新值"; //给数组元素赋予新的值 3、数组元素的添加 arrayObj. push([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组结尾,并返回数组新长度 arrayObj.unshift([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度 arrayObj.splice(insertPos,0,[item1[, item2[, . . . [,itemN]]]]);