Qual è il modo migliore per ottenere gli ultimi N elementi di un array Perl?Qual è il modo migliore per ottenere gli ultimi N elementi di un array Perl?
Se la matrice ha meno di N, non voglio un gruppo di undefs
nel valore restituito.
Qual è il modo migliore per ottenere gli ultimi N elementi di un array Perl?Qual è il modo migliore per ottenere gli ultimi N elementi di un array Perl?
Se la matrice ha meno di N, non voglio un gruppo di undefs
nel valore restituito.
@last_n = @source[-$n..-1];
Se si richiede alcun undef
s, quindi:
@last_n = ($n >= @source) ? @source : @source[-$n..-1];
Penso che quello che vuoi si chiama 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;
uscite:
v w x y z
semplice, non matematico:
@a = reverse @a;
@a = splice(@a, 0, $elements_to_keep);
@a = reverse @a;
Questo non funziona se @source ha meno di $ n elementi. – mike
Funziona bene. undefs entra in @last_n nelle posizioni per le quali @source non ha valori, il che è corretto per alcune semantiche non del tutto irragionevoli su cosa significhi "prendere gli ultimi N elementi". – chaos
oh, non ho mai usato pedici negativi del genere, ho imparato qualcosa oggi! – Nathan