zoukankan      html  css  js  c++  java
  • perl 数组快速去除重复元素

    这里记录两种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 "
    ###################
    ";
      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 "
    ###################
    ";
      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
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    Java8基础之native方法
    Java基础之static关键字
    Java基础之继承
    Java之equals和hashCode方法
    Java基础之this关键字
    Java基础之super关键字
    Java基础之Serializable接口
    Java之反射学习
    Python3之多线程学习
    Python3之深拷贝和浅拷贝区别
  • 原文地址:https://www.cnblogs.com/mmtinfo/p/11970736.html
Copyright © 2011-2022 走看看