我有一个数组,@cuts
,我想从@Data
中删除元素的索引。这是一种合适的方法吗?
foreach (@cuts){
$Data[$_] = "NULL";
}
for my $i (0 .. $#Data){
if ($Data[$i] eq "NULL"){
splice(@Data,$i,1);
}
}
答案 0 :(得分:3)
您无需使用标记值("NULL"
)。
my %cuts = map { $_ => 1 } @cuts;
my @keeps = grep !$cuts{$_}, 0..$#Data;
@Data = @Data[@keeps];
通过将其与前面的代码合并,肯定可以简化。
答案 1 :(得分:2)
my @newData = grep { !/^NULL\z/ } @Data;
答案 2 :(得分:2)
结合@toolic和@ user2752322:
delete @Data[@cuts];
my @newData = grep { defined } @Data;