Was ist der beste Weg, um die letzten N Elemente eines Perl-Arrays zu erhalten?Wie erhält man die letzten N Elemente eines Perl-Arrays?
Wenn das Array weniger als N hat, möchte ich nicht eine Reihe von undefs
im Rückgabewert.
Was ist der beste Weg, um die letzten N Elemente eines Perl-Arrays zu erhalten?Wie erhält man die letzten N Elemente eines Perl-Arrays?
Wenn das Array weniger als N hat, möchte ich nicht eine Reihe von undefs
im Rückgabewert.
@last_n = @source[-$n..-1];
Wenn Sie erfordern keine undef
s, so gilt:
@last_n = ($n >= @source) ? @source : @source[-$n..-1];
Ich denke, was Sie wollen, heißt 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;
Ausgänge:
v w x y z
einfach, keine math:
@a = reverse @a;
@a = splice(@a, 0, $elements_to_keep);
@a = reverse @a;
Das funktioniert nicht, wenn @source weniger als $ n Elemente hat. – mike
Es funktioniert in Ordnung. undefs gehen in @last_n in die Positionen, für die @source keine Werte hat, was für eine nicht ganz unbegründete Semantik von dem, was es bedeutet, "die letzten N Elemente zu nehmen", richtig ist. – chaos
oh, ich habe noch nie negative Indices benutzt, ich habe heute etwas gelernt! – Nathan