簡體   English   中英

獲取 Perl 數組的最后 N 個元素的最佳方法是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM