Perl中的分割/映射函数将元素划分为单独的数组

时间:2011-01-10 23:35:44

标签: perl

我保证有一个具有奇数个元素的可变长度数组。第一个元素将始终被忽略。此后,每个元素都需要分成两个相应的数组。例如:

Hello, a, 1, b, 2, c, 3将生成以下两个数组:[a,b,c][1,2,3]

我可以以某种方式使用Perl的map / split函数吗?有没有漂亮的单行?

4 个答案:

答案 0 :(得分:4)

( [ map $array[$_*2-1], 1..($#array/2) ],
  [ map $array[$_*2], 1..($#array/2) ] )

答案 1 :(得分:1)

@c = qw(Hello a 1 b 2 c 3);

@a = @c[map $_*2+1, 0 .. @c/2-1], @b = @c[map $_*2, 1 .. $#c/2];
# or
@a = @b = (), push @{$_%2 ? \@a : \@b}, $c[$_] for 1 .. $#c;

答案 2 :(得分:1)

perl -E'say"@ARGV[`seq $_ 2 $#ARGV`]"for 1,2' Hello a 1 b 2 c 3

答案 3 :(得分:1)

看着这件事突然发生在我身上,如果你不关心订单,你可以滥用哈希创建:

my %hash = @array[1 .. $#array];
(keys %hash, values %hash)

这也让我想知道Perl6 Zip运算符是否存在反转?