我在perl中有一個包含排序的非連續值的數組。例如:1 2 3 5 7 11 13 15
。剔除低位和高位,perl數組之外所有值的內置方法
我想刪除所有不lower
和upper
所有值,保持lower
和upper
在返回的選擇。我這樣做的方法是這樣的(或許可以通過使用slice
得到改善):
my @culledArray;
for (my $i = 0; $i < scalar(@array); $i++) {
if (($array[$i] <= $_[1]) and ($array[$i] >= $_[0])) {
push(@culledArray, $array[$i]);
}
}
其中lower
和upper
分別載於$_[0]
和$_[1]
。有沒有perl內建這樣做?
如果你正在尋找的效率,具有大名單,二進制搜索(因爲數組排序)會比你提出什麼更有效。 'grep'遍歷整個數組,所以如果在上界(而且數組很大)上有很多元素,那麼它會比你的方法效率低。 – Mat