Perl寻找去除数组中重复元素
2014-05-23 14:19
246 查看
写一个小程序时候,需要去除一个数组中的重复元素,搜索了一下,找到的代码主要是两种,一种是使用grep函数,一种是转换为hash表,代码分别如下:
使用grep函数代码片段:
代码:
使用转换hash代码片段:
代码:
使用grep那种方法并不是很好懂,我尝试解释一下,未必说得清楚或者正确。其实就是把数组的每个元素作为一个hash表的key,++之后第一个元素出现的时候值就是1,如果第二次出现这个值就是2了。其实就是统计了数组每个元素的出现次数,少于2次的就放到新的数组当中。我写了个比较好懂的代码,和使用grep方法的代码原理大致相同,但是又不完全一样,代码如下:
代码:
使用grep函数代码片段:
代码:
my @array = ( 'a', 'b', 'c', 'a', 'd', 1, 2, 5, 1, 5 ); my %count; my @uniq_times = grep { ++$count{ $_ } < 2; } @array; |
代码:
my @array = ( 'a', 'b', 'c', 'a', 'd', 1, 2, 5, 1, 5 ); my %saw; @saw{ @array } = ( ); my @uniq_array = sort keys %saw; |
代码:
my @array = ( 'a', 'b', 'c', 'a', 'd', 1, 2, 5, 1, 5 ); my %count_hash; my @uniq_array; foreach my $value ( @array ) { if( exists( $count_hash{ $value } ) ) { next; } else { $count_hash{ $value } = 1; push( @uniq_array, $value ); } } |
#!/usr/bin/perl use strict; my %hash; my @array = (1..10,5,20,2,3,4,5,5); #grep 保存符合条件的元素 @array = grep { ++$hash{$_} < 2 } @array; print join(" ",@array); print "n";
相关文章推荐
- Perl寻找去除数组中重复元素
- Perl数组去除重复元素
- 去除数组中的重复元素
- 一个关于去除数组重复元素的问题(C语言实现)
- js去除数组中的重复元素的好方法
- js 高效去除数组重复元素示例代码
- 去除js数组中的重复元素
- 在PERL中删除数组中重复的元素,并按序排列
- 去除数组维数n,元素为1--n的任意整数的重复整数
- 去除数组中的重复元素(引用类库hashset)
- 去除数组中重复的元素
- 算法:C#数组去除重复元素算法研究
- 去除数组中重复的元素
- java去除数组中的重复元素
- Javascript 去除数组的重复元素
- javascript中去除数组重复元素的实现
- 一个关于去除数组重复元素的问题(C语言实现)
- 去除有数组中重复的元素
- 去除数组中重复元素
- php数组操作:array_flip去除数组中重复元素