Perl快捷删除数组重复元素
2015-07-30 00:13
155 查看
以前写过类似的博客: /article/1498603.html
今天拿出来,再好好剖析一下:
定义一个计数哈希,并且初始化为空,即:my %count = ();
该哈希%count的key为数组元素(即:上面代码中的$_),value为数组重复元素的计数(即:上面代码中的$count{$_}, 初始化值为0,并且该哈希通过key每获取一次value, value都会++)
代码块{ ++$count{$_} == 1 }作为无重复元素的判断条件,并通过grep得到一个满足无重复元素的子数组
完整代码:
今天拿出来,再好好剖析一下:
1. 构造一个含有重复元素的数组
my @arr1 = (1 .. 10); my @arr2 = (5 .. 15); # join multi array my @arr = (@arr1, @arr2);
2. 删除数组中的重复元素
sub removeRepeat { my $arrRef = shift; my %count = (); my @uniqArr = grep { ++$count{$_} == 1 } @$arrRef; return @uniqArr; }
定义一个计数哈希,并且初始化为空,即:my %count = ();
该哈希%count的key为数组元素(即:上面代码中的$_),value为数组重复元素的计数(即:上面代码中的$count{$_}, 初始化值为0,并且该哈希通过key每获取一次value, value都会++)
代码块{ ++$count{$_} == 1 }作为无重复元素的判断条件,并通过grep得到一个满足无重复元素的子数组
完整代码:
#!/usr/bin/perl -w
use strict;
use warnings;
use English;
my @arr1 = (1 .. 10); my @arr2 = (5 .. 15); # join multi array my @arr = (@arr1, @arr2);
printArr(\@arr);
print "-------------------------------------\n";
my @uniqArr = removeRepeat(\@arr);
printArr(\@uniqArr);
# remove repeat element in array
sub removeRepeat { my $arrRef = shift; my %count = (); my @uniqArr = grep { ++$count{$_} == 1 } @$arrRef; return @uniqArr; }
# print array
sub printArr
{
my $arrRef = shift;
foreach my $element (@$arrRef)
{
print "$element\n";
}
}
相关文章推荐
- java Enum
- 路程遥远,莫忘初心
- 何时使用 Em 与 Rem
- Android广播——短信拦截
- ecshop 全站自定义title标题
- spring-ioc
- 简易“线程池”在Python网络爬虫中的应用
- hihoCoder_#1092 Have Lunch Together(最短路)
- 卸载win10应用
- C语言中联合体union的使用
- UGUI实现摇杆(模仿太极熊猫)
- java基础语法要点<二>(基于1.8)
- 《一起学》系列4:编译链接过程
- 系列4:编译链接过程
- leetcode之 median of two sorted arrays
- javaScript之function定义
- swift学习之元组
- Java Technical Notes
- 【HTML】DAY 3
- 关于linux设备模型kobject,kset,ktype