如何在Perl中找到两个不同数组中所有值的总和?
@array1 = (1, 2, 3);
@array2 = (10, 10, 10);
@sumofarray1and2 = ?
所以我想我可以在这里做两件事。我可以执行两个foreach
循环,然后首先添加@array1
和@array2
的内容,然后获取两者的总和。
答案 0 :(得分:9)
my $sum = 0;
$sum += $_ for (@array1, @array2);
答案 1 :(得分:3)
由于两个列表的总和已经在这里,这就是如何对列表元素进行求和:
my @sums = map {$array1[$_] + $array2[$_]} 0 .. $#array1;
这假定列表的长度相同。
此代码使用map
函数将其块应用于列表,并根据块的返回值生成新列表。显示的块将在索引$_
处添加每个数组的元素。 $_
由map
设置为其传入列表的值。 $#array1
是最后一个元素的索引,在本例中为2.这使得列表传递到地图(0, 1, 2)
。
答案 2 :(得分:2)
use List::Util qw(sum);
@array1=(1,2,3);
@array2=(10,10,10);
print sum(@array1, @array2);
答案 3 :(得分:1)
对于求和,请使用List::Util。对于“两个数组”,只需将它们放在一个列表中,您就会得到所有值的列表。
#!/usr/bin/perl
use strict;
use warnings;
use List::Util;
my @foo = (1,2,3);
my @bar = (4,5,6);
print List::Util::sum(@foo, @bar), "\n";
答案 4 :(得分:1)
#! /usr/bin/perl -l
use List::Util qw/ reduce /;
@array1 = (1, 2, 3);
@array2 = (10, 10, 10);
print reduce { $a + $b } @array1, @array2;
答案 5 :(得分:0)
#!/usr/bin/perl
use strict;
use warnings;
use List::Util qw( sum );
use List::MoreUtils qw( pairwise );
our ($a, $b);
my @array1 = (1, 2, 3);
my @array2 = (10, 10, 10);
my @sum = pairwise { $a + $b } @array1, @array2;
printf "%s : %d\n", "@sum", sum @sum;
输出:
C:\Temp> s 11 12 13 : 36