我有一个数组@k
。我想创建一个@j
可以复制 @k 内容但没有第 n 个元素的新数组。
例如我有@k=(1,1,1,3,4)
;我希望它@j
有所有@k
的元素,但不是k[2]
,即@j=(1,1,3,4);
我试过了,@j=grep {$k[$_] != $k[$selectedIndex]} @k;
但在这里它会选择数组的值而不是他的索引。
使用splice
.
my @j = @k;
my $idx = 2;
splice @j, $idx, 1;
您可以使用数组切片仅获取所需的元素,
my @j = @k[0,1,3,4];
或使用类似的方法过滤掉已知元素,
my $selectedIndex = 2;
my @j = @k[ grep { $_ != $selectedIndex } 0..$#k ];
试试这个“快速”的解决方案
@k = (2,4,6,8,10);
$index_that_i_dont_want = 2;
@j = ();
$k_size = @k;
foreach $i (0..$k_size) {
push (@j, $k[$i]) if($i != $index_that_i_dont_want);
}
#checks if it's right
foreach $val (@j) {
print "$val\n";
}