Как найти сумму всех значений из двух разных массивов в Perl? - PullRequest
0 голосов
/ 25 марта 2010

Как найти сумму всех значений из двух разных массивов в Perl?

@array1 = (1, 2, 3);
@array2 = (10, 10, 10);

@sumofarray1and2 = ?

Итак, я решил, что могу сделать два вида вещей здесь. Я могу сделать два foreach цикла и сначала добавить содержимое @array1 и @array2, а затем получить сумму обоих.

Ответы [ 6 ]

9 голосов
/ 25 марта 2010
my $sum = 0;
$sum += $_ for (@array1, @array2);
3 голосов
/ 25 марта 2010

Поскольку сумма обоих списков уже здесь, вот как можно суммировать списки по элементам:

my @sums = map {$array1[$_] + $array2[$_]} 0 .. $#array1;

Предполагается, что списки имеют одинаковую длину.

Этот код использует функцию map, которая применяет свой блок к списку и генерирует новый список из возвращаемого значения блока. Показанный блок добавит элементы из каждого массива с индексом $_. $_ устанавливается map для значений, переданных в списке. $#array1 - это индекс последнего элемента, в данном случае 2. Это делает список переданным в карту (0, 1, 2).

2 голосов
/ 25 марта 2010
use List::Util qw(sum);
@array1=(1,2,3);
@array2=(10,10,10);
print sum(@array1, @array2);
1 голос
/ 25 марта 2010

Другой способ сделать это с семейством fold , например, , reduce:

#! /usr/bin/perl -l

use List::Util qw/ reduce /;

@array1 = (1, 2, 3);
@array2 = (10, 10, 10);

print reduce { $a + $b } @array1, @array2;
1 голос
/ 25 марта 2010

Для суммирования используйте 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";
0 голосов
/ 25 марта 2010
#!/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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...