加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl寻找去除数组中重复元素

发布时间:2020-12-15 23:41:12 所属栏目:大数据 来源:网络整理
导读:原文地址:http://www.cnblogs.com/xufeiyang/p/3747617.html Perl寻找去除数组中重复元素 写一个小程序时候,需要去除一个数组中的重复元素,搜索了一下,找到的代码主要是两种,一种是使用grep函数,一种是转换为hash表,代码分别如下: 使用grep函数代码

原文地址:http://www.cnblogs.com/xufeiyang/p/3747617.html

Perl寻找去除数组中重复元素

写一个小程序时候,需要去除一个数组中的重复元素,搜索了一下,找到的代码主要是两种,一种是使用grep函数,一种是转换为hash表,代码分别如下:

使用grep函数代码片段:
代码:


my @array = ( 'a','b','c','a','d',1,2,5,5 );
my %count;
my @uniq_times = grep { ++$count{ $_ } < 2; } @array;



使用转换hash代码片段:
代码:



使用grep那种方法并不是很好懂,我尝试解释一下,未必说得清楚或者正确。其实就是把数组的每个元素作为一个hash表的key,++之后第一个元素出现的时候值就是1,如果第二次出现这个值就是2了。其实就是统计了数组每个元素的出现次数,少于2次的就放到新的数组当中。我写了个比较好懂的代码,和使用grep方法的代码原理大致相同,但是又不完全一样,代码如下:
代码:

?

复制代码

#!/usr/bin/perl

use strict;

my %hash;
@array = (1..10,5,0); line-height:1.5!important">20,0); line-height:1.5!important">2,0); line-height:1.5!important">3,0); line-height:1.5!important">4,0); line-height:1.5!important">5);
grep 保存符合条件的元素
@array = grep { ++$hash{$_} < 2 } @array;

print join(" ",128); line-height:1.5!important">@array);
print "n";

复制代码

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!