我有一个整数数组,我想知道如何为累积频率数组编写代码。我应该使用 for 循环还是有更快的方法。
例如给定整数:1 2 3 4 5 6 7 8 新数组将打印:1 3 6 10 15 21 28 36 谢谢!
我有一个整数数组,我想知道如何为累积频率数组编写代码。我应该使用 for 循环还是有更快的方法。
例如给定整数:1 2 3 4 5 6 7 8 新数组将打印:1 3 6 10 15 21 28 36 谢谢!
您也可以使用map
代替foreach ... push
:
#!/usr/bin/perl -w
use strict;
my @arr = 1..10;
my $sum;
my @newarr = map { $sum += $_ } @arr;
print "@newarr\n";
这很容易在一个for
循环中完成
use strict;
use warnings;
my @data = 1 .. 8;
my @cumulative = $data[0];
push @cumulative, $cumulative[-1] + $_ for @data[1..$#data];
print "@cumulative\n";
输出
1 3 6 10 15 21 28 36
一种方式,非常低效:
#!/usr/bin/env perl
use strict;
use warnings;
use List::Util qw/sum/;
my @arr = (1..10);
my @newarr;
for my $i (0..$#arr) {
$newarr[$i] = sum(@arr[0..$i])
}
循环和求和要好得多:
use strict;
use warnings;
my @arr = (1..10);
my @newarr;
my $mid;
for my $i (0..$#arr) {
$mid += $arr[$i];
push(@newarr,$mid);
}