Функция Split / Map в Perl для разделения элементов на отдельные массивы - PullRequest
0 голосов
/ 11 января 2011

У меня гарантированно есть массив переменной длины с нечетным количеством элементов.Первый элемент всегда будет игнорироваться.После этого каждый элемент необходимо разделить на два соответствующих массива.Например:

Hello, a, 1, b, 2, c, 3 приведет к следующим двум массивам: [a,b,c] и [1,2,3].

Могу ли я как-то использовать функцию Perl для отображения / разделения?Есть ли симпатичные однострочники?

Ответы [ 4 ]

4 голосов
/ 11 января 2011
( [ map $array[$_*2-1], 1..($#array/2) ],
  [ map $array[$_*2], 1..($#array/2) ] )
1 голос
/ 26 июля 2011

Глядя на это, мне вдруг приходит в голову, что если вас не волнует порядок, вы можете неправильно использовать создание хеша:

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

Это также заставляет меня задаться вопросом, есть ли обратная сторона для Perl6Почтовый оператор?

1 голос
/ 11 января 2011
perl -E'say"@ARGV[`seq $_ 2 $#ARGV`]"for 1,2' Hello a 1 b 2 c 3
1 голос
/ 11 января 2011
@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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...