Есть ли простой способ удалить n последовательных элементов массива Perl (что делает его более коротким по длине)?Удалить элементы массива Perl
1
A
ответ
14
Вы ищете встроенную функцию Perl splice, которая позволяет выбрать начальную точку, количество элементов для удаления и дополнительный список заметок.
my @array = 0 .. 9;
my @slice = splice @array, 3, 3;
say "@slice"; # prints "3 4 5"
say "@array"; # prints "0 1 2 6 7 8 9"
say 0 + @array; # prints 7
3
Чтобы удалить элементы массива, вы можете использовать splice.
0
Как указывалось в других ответах, splice
работ. В качестве альтернативного подхода (TIMTOWTDI, в конце концов), если у вас есть верхний и нижний индексы для n
последовательных элементов, которые вы хотите удалить, вы можете сделать это через grep
и срез массива. Например:
use strict;
use warnings;
my @a=("a".."z");
#We will remove the letters "e" through "u"
my $lower=4;
my $upper=20;
print "$_\n" foreach(@a[grep{$_<$lower or $_>$upper}0..$#a]);
Выход:
a
b
c
d
v
w
x
y
z