假设我有一个如下所示的数组:
@var = ( 1, 59, 120, 181 );
如何获取每个元素之间的步骤数组,例如:
@var_steps = ( 58, 61, 61 );
我知道我可以使用迭代器来执行此操作 i
和i + 1
对于每个索引,但是有更好的方法吗?
最佳答案
my @var = ( 1, 59, 120, 181 );
my @var_steps = map { $var[$_+1] - $var[$_] } 0 .. $#var-1;
或
use List::MoreUtils qw(pairwise);
my @a1 = @var[0..$#var-1];
my @a2 = @var[1..$#var];
my @var_steps = pairwise { $b - $a } @a1, @a2;
关于perl - 在 Perl 中,如何检查数组元素之间的步长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20042856/