Perl: List Comprehension
Perl does not have the “list comprehension” as it is. However, in general, functional programing's brevity is more easily achieved in Perl than Python.
Here's a example of generating a list of i*2 for i from 1 to 5:
# -*- coding: utf-8 -*- # perl use Data::Dumper; @myList = map {$_ * 2} (1..5); print Dumper(\@myList); # [ 2, 4, 6, 8, 10 ]
Here's a example of generating a list of pairs [i*2, i*3]
.
# -*- coding: utf-8 -*- # perl use Data::Dumper; @myList = map {[$_ * 2, $_ * 3]} (1..5); print Dumper(\@myList); # [ [ 2, 3 ], [ 4, 6 ], [ 6, 9 ], [ 8, 12 ], [ 10, 15 ] ]
Here's a example of generating a nested list involving 2 looping variables that's normally done with “list comprehension”. In Perl, it's just done with normal nested loops.
# -*- coding: utf-8 -*- # perl @myList=(); for $i (1..5) { for $j (1..3) { push @myList, [$i,$j]; } } use Data::Dumper; $Data::Dumper::Indent=0; print Dumper(\@myList); __END__ [ [1,1],[1,2],[1,3], [2,1],[2,2],[2,3], [3,1],[3,2],[3,3], [4,1],[4,2],[4,3], [5,1],[5,2],[5,3] ]