Cách tốt nhất để lấy các phần tử N cuối cùng của một mảng Perl là gì?Cách tốt nhất để có được các phần tử N cuối cùng của một mảng Perl là gì?
Nếu mảng có ít hơn N, tôi không muốn một bó số undefs
trong giá trị trả lại.
Cách tốt nhất để lấy các phần tử N cuối cùng của một mảng Perl là gì?Cách tốt nhất để có được các phần tử N cuối cùng của một mảng Perl là gì?
Nếu mảng có ít hơn N, tôi không muốn một bó số undefs
trong giá trị trả lại.
@last_n = @source[-$n..-1];
Nếu bạn không cần undef
s, sau đó:
@last_n = ($n >= @source) ? @source : @source[-$n..-1];
Tôi nghĩ điều bạn muốn được gọi là 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;
kết quả đầu ra:
v w x y z
đơn giản, không có môn toán:
@a = reverse @a;
@a = splice(@a, 0, $elements_to_keep);
@a = reverse @a;
Điều đó không hiệu quả nếu @source có ít hơn $ n mục. – mike
Nó hoạt động tốt. undefs đi vào @last_n ở các vị trí mà @source không có giá trị, điều này đúng cho một số ngữ nghĩa không hoàn toàn không hợp lý về ý nghĩa của việc "lấy các phần tử N cuối cùng". – chaos
ồ, tôi chưa bao giờ sử dụng các bảng con tiêu cực như thế, tôi đã học được điều gì đó ngay hôm nay! – Nathan