Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re: iterating 2 arrays in parallel

by linuxer (Deacon)
on Apr 15, 2009 at 09:48 UTC ( #757607=note: print w/ replies, xml ) Need Help??


in reply to iterating 2 arrays in parallel

use List::MoreUtils qw( pairwise ); my @combined = pairwise { $a .':'. $b } @array1, @array2;

See List::MoreUtils for details.


Comment on Re: iterating 2 arrays in parallel
Download Code
Re^2: iterating 2 arrays in parallel
by citromatik (Curate) on Apr 15, 2009 at 10:16 UTC

    pairwise from List::MoreUtils requires that both arrays have the same length, you can get the same behaviour easily without using any extra module at all:

    my @combined = map {"$a1[$_]:$a2[$_]"} ($#a1 < $#a2 ? (0..$#a2) : (0.. +$#a1));

    This version can be easily fixed to treat arrays of different length:

    my @combined = map {($a1[$_]//"").":".($a2[$_]//"")} ($#a1 < $#a2 ? (0 +..$#a2) : (0..$#a1));

    citromatik

      The given example uses arrays of the same length, so pairwise looks fine to me.

      And if they are not of the same length, I think the same way as JavaFan, that iswas left as an exercise to the reader. I don'tdidn't want to guess, what has to happen if the lengths differ. It's the OP who should know, what to do.

      Nevertheless, thanks for your examples ;o)

      Update:

      What about this pairwise solution to work with arrays of different lengths:

      use List::MoreUtils qw( pairwise ); my @a=(1 .. 5 ); my @b=( 'a' .. 'c' ); ### Good point from JavaFan; bad idea to ignore 0 ### my @combined = pairwise { ( $a || '' ) .':'. ( $b || '' ) } @a, @b +; ### fixed: my @combined = pairwise { ( defined $a ? $a : '' ) .':'. ( defined $b +? $b : '' ) } @a, @b; { local $,="\n", print @combined; }
        I think it's a bad idea to replace a 0 with an empty string as your solution does. Either use defined, '//', or just turn off warnings.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://757607]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (10)
As of 2014-07-10 06:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    When choosing user names for websites, I prefer to use:








    Results (202 votes), past polls