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 "\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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM