这里记录两种perl数组去重的办法,一种利用哈希(hash),一种直接利用perl自带的模块List::MoreUtils内部的函数uniq。

一、利用hash去重

示例代码如下:

  1 #!/usr/bin/perl -w
2 use strict;
3
4 my @list=qw /1 2 3 2 1 4 aa a bb c b bb d/;
5 foreach (@list){print "$_ ";}
6
7 print "\n###################\n";
8 my %ha;
9 my @uniq=grep{++$ha{$_}<2}@list;
10 foreach (@uniq){print "$_ ";}

基本原理是将原数组元素作为hash的key,遍历计数,grep函数筛选出只出现一次的key,放入新的数组@uniq中。

输出结果:

  1 1 2 3 2 1 4 aa a bb c b bb d
2 ###################
3 1 2 3 4 aa a bb c b d
4

二、利用uniq函数去重

这个函数所在的模块List::MoreUtils还有很多其他操作数组的用法,感兴趣的可以看看,多了解下,这里附上参考网址:https://metacpan.org/pod/List::MoreUtils#NAME

示例代码如下:

  1 #!/usr/bin/perl -w
2 use strict;
3 use List::MoreUtils ':all';
4
5 my @list=qw /1 2 3 2 1 4 aa a bb c b bb d/;
6 foreach (@list){print "$_ ";}
7
8 print "\n###################\n";
9 my @uni=uniq(@list);
10 foreach (@uni){print "$_ ";}
11

直接调用uniq()函数即可,输出结果如下:

  1 1 2 3 2 1 4 aa a bb c b bb d
2 ###################
3 1 2 3 4 aa a bb c b d

perl 数组快速去除重复元素的更多相关文章

  1. php将多个值的数组去除重复元素

    array_unique(array) 只能处理value只有单个的数组. 去除有多个value数组,可以使用如下函数实现: function more_array_unique($arr=array ...

  2. LintCode 521.去除重复元素

    LintCode 521.去除重复元素 描述 给一个整数数组,去除重复的元素. 你应该做这些事 1.在原数组上操作 2.将去除重复之后的元素放在数组的开头 3.返回去除重复元素之后的元素个数 挑战 1 ...

  3. [C++]vector去除重复元素

    #include <iostream> #include <vector> #include <algorithm> #include <set> us ...

  4. [LeetCode] Remove Duplicates from Sorted Array 有序数组中去除重复项

    Given a sorted array, remove the duplicates in place such that each element appear only once and ret ...

  5. Python列表去除重复元素

    主要尝试了3种列表去除重复元素 #2.去除列表中的重复元素 #set方法 def removeDuplicates_set(nums): l2 = list(set(l1)) #用l1的顺序排序l2 ...

  6. java集合 collection-list-ArrayList 将自定义对象作为元素存到ArrayList集合中,并去除重复元素。

    import java.util.*; /* 将自定义对象作为元素存到ArrayList集合中,并去除重复元素. 比如:存人对象.同姓名同年龄,视为同一个人.为重复元素. 思路: 1,对人描述,将数据 ...

  7. 获取JS数组中所有重复元素

    //获取数组内所有重复元素,并以数组返回 //例:入参数组['1','2','4','7','1','2','2'] 返回数组:['1','2'] function GetRepeatFwxmmc(a ...

  8. Java-Runoob-高级教程-实例-数组:10. Java 实例 – 查找数组中的重复元素-un

    ylbtech-Java-Runoob-高级教程-实例-数组:10. Java 实例 – 查找数组中的重复元素 1.返回顶部 1. Java 实例 - 查找数组中的重复元素  Java 实例 以下实例 ...

  9. perl数组的长度与元素个数

    perl数组的长度与元素个数 $#数组名 ---表示数组中最后一个元素的下标,它等于元素个数减1. @数组名 ---表示数组中元素的个数. $标量=@数组名 ---将一个数组赋值给一个标量变量,标量得 ...

随机推荐

  1. UltraSoft - Beta - Postmortem事后分析

    UltraSoft - Beta - PostMORTEM 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 解决的问题和定义都在[软软软]功能规格说明书 ...

  2. 第4次 Beta Scrum Meeting

    本次会议为Beta阶段第4次Scrum Meeting会议 会议概要 会议时间:2021年6月4日 会议地点:「腾讯会议」线上进行 会议时长:0.5小时 会议内容简介:对完成工作进行阶段性汇报:对下一 ...

  3. [对对子队]会议记录4.20(Scrum Meeting11)

    今天已完成的工作 何瑞 ​ 工作内容:搭建第三关,添加了运行指令标识 ​ 相关issue:搭建关卡2.3 ​ 相关签入:4.20签入1 4.20签入2 吴昭邦 ​ 工作内容:搭建第三关 ​ 相关iss ...

  4. Ubuntu mysql安装与使用

    Ubuntu 下安装 mysql 运行下面的shell代码 #安装mysql sudo apt-get -y install mysql-server sudo apt-get -y install ...

  5. 一步一步学ROP之gadgets和2free篇(蒸米spark)

    目录 一步一步学ROP之gadgets和2free篇(蒸米spark) 0x00序 0x01 通用 gadgets part2 0x02 利用mmap执行任意shellcode 0x03 堆漏洞利用之 ...

  6. 设计模式(1-3)-动态代理(WeakCache的运用)

    阅读本篇文章前,请事先阅读 理解Java的强引用.软引用.弱引用和虚引用. 看看什么是强引用.什么是弱引用及它们的用途,很必要!!! 上一节讲到,获取对应的代理类时,首先会从缓存中去拿,若拿不到才会去 ...

  7. NOIP模拟88(多校21)

    前言 对于这套题的总体感觉就是难,然后就是自己很菜... 对于 T1 考试时只会一个最垃圾的背包,考完之后对于思路这一块也不是很顺利,大概这就是薄弱的地方吧. 然后 T2 是比较简单的一道题了,但是考 ...

  8. 关于linux7.x系列下的 systemd 的理解

    历史上Linux的启动一直采用init进程,下面的命令用来启动服务. $ sudo /etc/init.d/apache2 start #或者 $ service apache2 start 这种方法 ...

  9. lvs 四层负载相关

    都打开 /etc/sysctl.conf 中的 net.ip4.ip_forward=1.开启路由转发功能. 分发器 : eth0:192.168.1.66 (VIP) eth1:192.168.2. ...

  10. “TCP:三次握手”分析——以一个简单的“服务器”和“客户端”为例

    linux&C这两天学到了网络编程这一章,自己写了一个小的"服务器"和"客户端"程序,目的在于简单理解tcp/ip模型,以及要搭建一台简单服务器,服务器 ...