我有一個數組@k
。我想創建一個新的數組@j
,它可以複製@k內容但不包含第n個元素。從陣列中刪除元素知道其索引
E.g.我有@k=(1,1,1,3,4)
;我想這@j
擁有所有@k
的元素,但不是k[2]
,即@j=(1,1,3,4);
我@j=grep {$k[$_] != $k[$selectedIndex]} @k;
嘗試,但在這一點,將選擇陣列的價值,而不是他的索引。
我有一個數組@k
。我想創建一個新的數組@j
,它可以複製@k內容但不包含第n個元素。從陣列中刪除元素知道其索引
E.g.我有@k=(1,1,1,3,4)
;我想這@j
擁有所有@k
的元素,但不是k[2]
,即@j=(1,1,3,4);
我@j=grep {$k[$_] != $k[$selectedIndex]} @k;
嘗試,但在這一點,將選擇陣列的價值,而不是他的索引。
您可以使用數組切片僅取你想要的元素,
my @j = @k[0,1,3,4];
,或者使用類似的方法來過濾掉已知元素,
my $selectedIndex = 2;
my @j = @k[ grep { $_ != $selectedIndex } 0..$#k ];
使用splice
。
my @j = @k;
my $idx = 2;
splice @j, $idx, 1;
試試這個「快」的解決方案
@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";
}
但是,我必須刪除索引並不總是相同的。我必須儘可能使它更通用 –
但它不是可定製的,可能有另一種方式來做到這一點。 – Lompa
@ ValerioD.Ciotti你是否存儲過某些應該過濾的元素或指示? –