• 热门专题

Perl快捷删除数组重复元素

作者:  发布日期:2015-07-30 22:40:09
Tag标签:数组  元素  

  • 1. 构造一个含有重复元素的数组

    my @arr1 = (1 .. 10);
    my @arr2 = (5 .. 15);
    
    # join multi array
    my @arr = (@arr1, @arr2);

    2. 删除数组中的重复元素

    sub removeRepeat
    {
        my $arrRef = shift;
        my %count = ();
    
        my @uniqArr = grep { ++$count{$_} == 1 } @$arrRef;
    
        return @uniqArr;
    }

    定义一个计数哈希,并且初始化为空,即:my %count = ();
    该哈希%count的key为数组元素(即:上面代码中的$_),value为数组重复元素的计数(即:上面代码中的$count{$_}, 初始化值为0,并且该哈希通过key每获取一次value, value都会++)

    代码块{ ++$count{$_} == 1 }作为无重复元素的判断条件,并通过grep得到一个满足无重复元素的子数组

    完整代码:

    #!/usr/bin/perl -w
    
    use strict;
    use warnings;
    use English;
    
    my @arr1 = (1 .. 10);
    my @arr2 = (5 .. 15);
    
    # join multi array
    my @arr = (@arr1, @arr2);
    
    printArr(@arr);
    print '-------------------------------------
    ';
    
    my @uniqArr = removeRepeat(@arr);
    printArr(@uniqArr);
    
    # remove repeat element in array
    sub removeRepeat
    {
        my $arrRef = shift;
        my %count = ();
    
        my @uniqArr = grep { ++$count{$_} == 1 } @$arrRef;
    
        return @uniqArr;
    }
    
    # print array
    sub printArr
    {
        my $arrRef = shift;
    
        foreach my $element (@$arrRef)
        {
            print '$element
    ';
        }
    }

     

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规