博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Perl快捷删除数组重复元素
阅读量:6150 次
发布时间:2019-06-21

本文共 1058 字,大约阅读时间需要 3 分钟。

以前写过类似的博客:

今天拿出来,再好好剖析一下:

1. 构造一个含有重复元素的数组

my @arr1 = (1 .. 10);my @arr2 = (5 .. 15);# join multi arraymy @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 -wuse strict;use warnings;use English;my @arr1 = (1 .. 10);my @arr2 = (5 .. 15);# join multi arraymy @arr = (@arr1, @arr2);printArr(\@arr);print "-------------------------------------\n";my @uniqArr = removeRepeat(\@arr);printArr(\@uniqArr);# remove repeat element in arraysub removeRepeat{
my $arrRef = shift; my %count = (); my @uniqArr = grep { ++$count{
$_} == 1 } @$arrRef; return @uniqArr;}# print arraysub printArr{
my $arrRef = shift; foreach my $element (@$arrRef) { print "$element\n"; }}

转载地址:http://hhqya.baihongyu.com/

你可能感兴趣的文章
spring 整合 redis 配置
查看>>
redhat6.1下chrome的安装
查看>>
cacti分组发飞信模块开发
查看>>
浅析LUA中游戏脚本语言之魔兽世界
查看>>
飞翔的秘密
查看>>
Red Hat 安装源包出错 Package xxx.rpm is not signed
查看>>
编译安装mysql-5.6.16.tar.gz
查看>>
类与成员变量,成员方法的测试
查看>>
活在当下
查看>>
每天进步一点----- MediaPlayer
查看>>
PowerDesigner中CDM和PDM如何定义外键关系
查看>>
跨域-学习笔记
查看>>
the assignment of reading paper
查看>>
android apk 逆向中常用工具一览
查看>>
MyEclipse 报错 Errors running builder 'JavaScript Validator' on project......
查看>>
Skip List——跳表,一个高效的索引技术
查看>>
Yii2单元测试初探
查看>>
五、字典
查看>>
前端js之JavaScript
查看>>
Log4J日志配置详解
查看>>