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
posted @   天使不设防  阅读(8097)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示