用索引数组对数组进行子采样

时间:2018-12-10 14:39:48

标签: perl

请考虑使用大型数组@data。 另外,还有一些数组@indexes包含数据索引(请考虑$indexes[n] < @data,以保证每个n)。

是否有一个简单的表达式来检索结果数组

my @res;
foreach my $ind (@indexes){
  push(@res, $data[$ind]);
}

例如(无效):

my @res = $data[@indexes];

有东西吗?

1 个答案:

答案 0 :(得分:11)

使用数组切片。

切片将按@data的顺序返回@indexes的元素

@res = @data[@indexes]

注意@之前的data,这告诉Perl返回一个列表,其中

@res = $data[@indexes]

@indexes的长度作为@data的元素以返回