perl 删除数组元素的几种方法小结

1. 用grep函数

函数名 grep
调用语法 @foundlist = grep (pattern, @searchlist);
解说 与同名的UNIX查找工具类似,grep函数在列表中抽取与指定模式匹配的元素,参数pattern为欲查找的模式,返回值是匹配元素的列表。
例子 @list = ("This", "is", "a", "test");
@foundlist = grep(/^[tT]/, @list);
结果 @foundlist = ("This", "test");

2. 用map函数

函数名 map
调用语法 @resultlist = map (expr, @list);
解说 此函数在Perl5中定义,可以把列表中的各个元素作为表达式expr的操作数进行运算,其本身不改变,结果作为返回值。在表达式expr中,系统变量$_代表各个元素。
例子
1、@list = (100, 200, 300);
@results = map ($_+1, @list);

2、@results = map (&mysub($_), @list);
结果 1、(101, 201, 301)
2、无

3. 用splice或者delete

函数名 splice
调用语法 @retval = splice (@array, slipelements, length, @newlist);

解说:拼接函数可以向列表(数组)中间插入元素、删除子列表或替换子列表。参数skipelements是拼接前跳过的元素数目,length是被替换的元素数,newlist是将要拼接进来的列表。当newlist的长度大于length时,后面的元素自动后移,反之则向前缩进。因此,当length=0 时,就相当于向列表中插入元素,而形如语句
splice (@array, -1, 0, "Hello");

则向数组末尾添加元素。而当newlist为空时就相当于删除子列表,这时,如果length为空,就从第skipelements个元素后全部删除,而删除最后一个元素则为:splice (@array, -1);这种情况下,返回值为被删去的元素列表。

两者都可以按照index直接删除array或者hash的元素。但是delete删除元素后, index后面的元素并不会主动往前移动,该元素删除后,在array还留有一个undef的元素,显然删除得不够干净。

(0)

相关推荐

  • perl 删除数组元素的几种方法小结

    1. 用grep函数 函数名 grep 调用语法 @foundlist = grep (pattern, @searchlist); 解说 与同名的UNIX查找工具类似,grep函数在列表中抽取与指定模式匹配的元素,参数pattern为欲查找的模式,返回值是匹配元素的列表. 例子 @list = ("This", "is", "a", "test"); @foundlist = grep(/^[tT]/, @list); 结果

  • JavaScript清空数组元素的两种方法简单比较

    本文实例讲述了JavaScript清空数组元素的两种方法简单比较.分享给大家供大家参考.具体分析如下: JavaScript中数组清空有多种方法: var arr = [1, 2, 3]; arr = [];//方法一 arr.length = 0;//方法二 arr = null;//方法三 delete arr;//方法四 这里比较最常用的第一种和第二种 var arr = [1, 2, 3]; // 方法一 // 优点:如果有其他地方用到了数组arr中的元素,这种方法相对来说更安全.并且也

  • javascript删除数组元素的七个方法示例

    前言 在JavaScript中,除了Object之外,Array类型(数组)恐怕就是最常用的类型了.与其他语言的数组相比,JavaScript中的Array非常灵活.这种灵活性有利有弊,好处是其富有创造性,可以提供各种灵活的解决方案:坏处是容易脑子不够用,因为事实上,它太灵活了,灵活到无法控制的抓狂. 前面调侃了几句,回归正题,这里要总结7个在JavaScript中删除Array元素的方法,分别是利用length属性.delete关键字.pop()栈方法.shift()队列方法.splice()

  • Golang切片删除指定元素的三种方法对比

    目录 前言 1.截取法(修改原切片) 2.拷贝法(不改原切片) 3.移位法(修改原切片) 3.1 方式一 3.2 方式二 4.性能对比 5.小结 前言 Go 并没有提供删除切片元素专用的语法或函数,需要使用切片本身的特性来删除元素. 删除切片指定元素一般有如下几种方法,本文以 []int 为例给出具体实现. 1.截取法(修改原切片) 这里利用对 slice 的截取删除指定元素.注意删除时,后面的元素会前移,所以下标 i 应该左移一位. // DeleteSlice1 删除指定元素. func D

  • Python 删除List元素的三种方法remove、pop、del

    1.remove: 删除单个元素,删除首个符合条件的元素,按值删除,从左向右依次删除符合条件的值 举例说明: >>> str=[1,2,3,4,5,2,6] >>> str.remove(2) >>> str [1, 3, 4, 5, 2, 6] 2.pop: 删除单个或多个元素,按位删除(根据索引删除) >>> str=[0,1,2,3,4,5,6] >>> str.pop(1) #pop删除时会返回被删除的元素

  • Python字典删除键值对和元素的四种方法(小结)

    目录 1.del删除字典本身 2.pop()删除字典键值对  3.popitem()删除字典键值对 4.clear()删除字典键值对:清空字典中的所有内容,但是不删除字典本身,del删除字典本身 在删除每个字典的时候有些方法和删除其他拥有独立内存的数据使用的方法是一样的,比如del,直接清空内存,clear()是值清除变量值.字典的删除我们从字典对象本身和字典中的键值对两个方面出发,来学习一下. 1.del删除字典本身 del就是从内存级别删除字典本身,让这个字典对象彻底消失.同时也可以删除字典

  • Numpy 改变数组维度的几种方法小结

    来自 <Python数据分析基础教程:Numpy 学习指南(第2版)> Numpy改变数组维度的方法有: reshape() ravel() flatten() 用元组设置维度 transpose() resize() 下面将依次进行说明 0. 首先,创建一个多维数组 from numpy import * a = arange(24) 得到: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23] 1.reshape

  • js数组去重的N种方法(小结)

    对于数组去重我们有n种方法可以实现. es5实现方法 for循环+indexOf function unique(arr) { var uniqueArr = [], len = arr.length for (var i = 0; i < len; i++) { if (uniqueArr.indexOf(arr[i]) == -1) { uniqueArr.push(arr[i]) } } return uniqueArr } var arr = [1, 2, 3, 1, 5, "1&

  • JavaScrip数组删除特定元素的几种方法总结

    前言 可能一说到删除数组特定元素你估计不止一种方法可以实现,那么下面且来看看我总结的这几种方法,可能会对你有所帮助!话不多说了,来一起看看详细的介绍吧. 源数组 var arr = ["George", "John", "Thomas", "James", "Adrew", "Martin"]; 伪删除 什么是伪删除呢? 就是说将数组元素值设置为null; arr[ arr.indexO

  • python删除列表元素的三种方法(remove,pop,del)

    remove 删除单个元素,删除首个符合条件的元素,按值删除,返回值为空 List_remove = [1, 2, 2, 2, 3, 4] print(List_remove.remove(2)) print("after remove", List_remove) # None # after remove [1, 2, 2, 3, 4] -------------------------------------------------------------------------

随机推荐