我有一个数组,我想在其中插入一个新元素,将所有其他元素向右移动:
my @a = (2, 5, 4, 8, 1); # insert 42 into position no. 2
预期结果:
(2, 5, 42, 4, 8, 1);
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
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 ];
2条答案
按热度按时间62lalag41#
这意味着:在数组@位置2中删除0个元素并添加元素42(可以添加更多元素)。更多信息请参见splice,特别是以下用法:
9nvpjoqh2#
它可以很容易地通过在所需的位置切片阵列来完成。
输出量