[英]What's the best way to get the last N elements of a Perl array?
獲取 Perl 數組的最后 N 個元素的最佳方法是什么?
如果數組小於 N,我不希望返回值中有一堆undefs
。
@last_n = @source[-$n..-1];
如果您不需要undef
s,那么:
@last_n = ($n >= @source) ? @source : @source[-$n..-1];
我認為您想要的稱為slice 。
@a = (a .. z);
@last_five = @a[ $#a - 4 .. $#a ];
say join " ", @last_five;
輸出:
vwxyz
簡單,沒有數學:
@a = reverse @a;
@a = splice(@a, 0, $elements_to_keep);
@a = reverse @a;
由於@a 在標量上下文中給出了數組 a 的長度,並且因為@a == $#a + 1
(除非$[
設置為非零),所以可以從第 $nth 獲取切片(從零開始計數)到最后一個元素@a[$n..@a-1]
-- #tmtowtdi.
TMTOWTDI,但我認為這更容易閱讀(但從@source
中刪除了元素):
my @last_n = splice(@source, -$n);
如果您不確定@source
至少有$n
元素:
my @last_n = ($n >= @source) ? @source : splice(@source, -$n);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.