perl 如何在数组中插入一个元素,并将其他元素右移?

pkmbmrz7  于 2022-11-15  发布在  Perl
关注(0)|答案(2)|浏览(199)

我有一个数组,我想在其中插入一个新元素,将所有其他元素向右移动:

my @a = (2, 5, 4, 8, 1);
# insert 42 into position no. 2

预期结果:

(2, 5, 42, 4, 8, 1);
62lalag4

62lalag41#

my @a = (2, 5, 4, 8, 1);
splice(@a, 2, 0, 42);   # -> (2, 5, 42, 4, 8, 1)

这意味着:在数组@位置2中删除0个元素并添加元素42(可以添加更多元素)。更多信息请参见splice,特别是以下用法:

splice ARRAY or EXPR,OFFSET,LENGTH,LIST
9nvpjoqh

9nvpjoqh2#

它可以很容易地通过在所需的位置切片阵列来完成。

use strict;
use warnings;
use feature 'say';

use Data::Dumper;

my @arr = (2, 5, 4, 8, 1);
my $pos = 2;
my $val = 42;

say Dumper(\@arr);

@arr = (@arr[0..$pos-1],$val,@arr[$pos..$#arr]);

say Dumper(\@arr);

输出量

$VAR1 = [
          2,
          5,
          4,
          8,
          1
        ];

$VAR1 = [
          2,
          5,
          42,
          4,
          8,
          1
        ];

相关问题