我保证有一个具有奇数个元素的可变长度数组。第一个元素将始终被忽略。此后,每个元素都需要分成两个相应的数组。例如:
Hello, a, 1, b, 2, c, 3
将生成以下两个数组:[a,b,c]
和[1,2,3]
。
我可以以某种方式使用Perl的map / split函数吗?有没有漂亮的单行?
答案 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运算符是否存在反转?