Каков наилучший способ получить последние N элементов массива Perl?

17

Каков наилучший способ получить последние N элементов массива Perl?

Если массив имеет меньше N, я не хочу иметь кучу undefs в возвращаемом значении.

    
задан mike 04.03.2009 в 18:57
источник

5 ответов

34
@last_n = @source[-$n..-1];

Если вам не требуется undef s, то:

@last_n = ($n >= @source) ? @source : @source[-$n..-1];
    
ответ дан chaos 04.03.2009 в 19:06
источник
5

Я думаю, что то, что вы хотите, называется срезом .

    
ответ дан siukurnin 04.03.2009 в 19:01
источник
2
@a = (a .. z);
@last_five = @a[ $#a - 4 .. $#a ];
say join " ", @last_five;

выходы:

  

v w x y z

    
ответ дан Nathan 04.03.2009 в 19:06
источник
1

простой, без математики:

@a = reverse @a;
@a = splice(@a, 0, $elements_to_keep);
@a = reverse @a;
    
ответ дан sbin_bash 21.03.2017 в 15:57
источник
-2
 my $size = (scalar @list) - 1;
 my @newList = @list[$size-$n..$size];
    
ответ дан Tim Howland 04.03.2009 в 19:05
источник