【问题标题】:Remove elements of a Perl array删除 Perl 数组的元素
【发布时间】:2012-03-09 01:11:55
【问题描述】:

有没有一种简单的方法可以删除 Perl 数组的 n 个连续元素(从而使其长度更短)?

【问题讨论】:

    标签: arrays perl elements


    【解决方案1】:

    您正在寻找 Perl 内置函数 splice,它可以让您选择起点、要删除的元素数量以及可选的替换列表。

    my @array = 0 .. 9;
    
    my @slice = splice @array, 3, 3;
    
    say "@slice";   # prints "3 4 5"
    say "@array";   # prints "0 1 2 6 7 8 9"
    say 0 + @array; # prints 7
    

    【讨论】:

      【解决方案2】:

      您可以使用splice 删除数组元素。

      【讨论】:

        【解决方案3】:

        正如其他答案所示,splice 有效。作为一种替代方法(毕竟是 TIMTOWTDI),如果您有要删除的 n 连续元素的上下索引,那么您可以通过 grep 和数组切片来完成。例如:

        use strict;
        use warnings;
        
        my @a=("a".."z");
        
        #We will remove the letters "e" through "u"
        my $lower=4;
        my $upper=20;
        print "$_\n" foreach(@a[grep{$_<$lower or $_>$upper}0..$#a]);
        

        输出是:

        a
        b
        c
        d
        v
        w
        x
        y
        z
        

        【讨论】:

          猜你喜欢
          • 2013-07-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-29
          相关资源
          最近更新 更多