¿Cuál es la mejor manera de obtener los últimos N elementos de una matriz Perl?¿Cuál es la mejor manera de obtener los últimos N elementos de una matriz Perl?
Si la matriz tiene menos de N, no quiero un montón de undefs
en el valor de retorno.
¿Cuál es la mejor manera de obtener los últimos N elementos de una matriz Perl?¿Cuál es la mejor manera de obtener los últimos N elementos de una matriz Perl?
Si la matriz tiene menos de N, no quiero un montón de undefs
en el valor de retorno.
@last_n = @source[-$n..-1];
Si necesita ningún undef
s, entonces:
@last_n = ($n >= @source) ? @source : @source[-$n..-1];
Creo que lo que quiere se llama slice.
my $size = (scalar @list) - 1;
my @newList = @list[$size-$n..$size];
@a = (a .. z);
@last_five = @a[ $#a - 4 .. $#a ];
say join " ", @last_five;
salidas:
V W X Y Z
simple, no matemática:
@a = reverse @a;
@a = splice(@a, 0, $elements_to_keep);
@a = reverse @a;
Eso no funciona si @source tiene menos de $ n artículos. – mike
Funciona bien. undefs entran en @last_n en las posiciones para las cuales @source no tiene valores, lo que es correcto para algunas semánticas no del todo irracionales de lo que significa "tomar los últimos N elementos". – chaos
oh, nunca he usado subíndices negativos como ese, ¡aprendí algo hoy! – Nathan