1

我有一个数组@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;但在这里它会选择数组的值而不是他的索引。

4

3 回答 3

7

使用splice.

my @j = @k;
my $idx = 2;
splice @j, $idx, 1;
于 2013-10-22T09:27:17.923 回答
2

您可以使用数组切片仅获取所需的元素,

my @j = @k[0,1,3,4];

或使用类似的方法过滤掉已知元素,

my $selectedIndex = 2;
my @j = @k[ grep { $_ != $selectedIndex } 0..$#k ];
于 2013-10-22T09:21:32.443 回答
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";
}
于 2013-10-22T09:31:52.287 回答