2011-01-10 96 views
0

我保證有一個具有奇數個元素的可變長度數組。第一個元素將始終被忽略。之後每個元素都需要分成兩個相應的數組。例如:Perl中的拆分/映射函數將元素拆分爲單獨的數組

Hello, a, 1, b, 2, c, 3將導致以下兩個陣列:[a,b,c][1,2,3]

我可以以某種方式使用Perl的地圖/分割功能嗎?有沒有漂亮的單線隊員?

+0

你想使用perl的任何特定原因? – Hank 2011-01-10 23:40:26

回答

4
([ map $array[$_*2-1], 1..($#array/2) ], 
    [ map $array[$_*2], 1..($#array/2) ]) 
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; 
1
perl -E'say"@ARGV[`seq $_ 2 $#ARGV`]"for 1,2' Hello a 1 b 2 c 3 
1

在此尋找它突然發生,我認爲,如果你不關心的順序,你可以濫用哈希創作:

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

這也讓我不知道如果Perl6 Zip操作符有反轉的話?