How can I sum arrays element-wise in Perl?

前端 未结 9 522
孤城傲影
孤城傲影 2020-12-15 07:53

I have two arrays:

@arr1 = ( 1, 0, 0, 0, 1 );
@arr2 = ( 1, 1, 0, 1, 1 );

I want to sum items of both arrays to get new one like

<         


        
9条回答
  •  天命终不由人
    2020-12-15 08:36

    You've seen a C style for loop, and pairwise. Here's an idiomatic Perl for loop and map:

    my @arr1 = ( 1, 0, 0, 0, 1 );
    my @arr2 = ( 1, 1, 0, 1, 1 );
    
    my @for_loop;
    for my $i ( 0..$#arr1 ) { 
        push @for_loop, $arr1[$i] + $arr2[$i];
    }
    
    my @map_array = map { $arr1[$_] + $arr2[$_] } 0..$#arr1;
    

    I like map and pairwise best. I'm not sure that I have a preference between those two options. pairwise handles some boring details of plumbing for you, but it is not a built-in like map. On the other hand, the map solution is very idiomatic, and may be opaque to a part-time perler.

    So, no real wins for either approach. IMO, both pairwise and map are good.

提交回复
热议问题