Манипуляции с массивом Perl - PullRequest
5 голосов
/ 15 июля 2010

Есть ли в perl единственная строка, которая делает что-то подобное?

Array = [100,200,300,400,500];

percent = 50%

new_Array = [50,100,150,200,250];

То есть я даю массив и указываю проценты. И это должно дать мне новый массив с заданным процентом от исходных значений массива.

должен позаботиться о нечетных числах и дать мне потолок или пол этого значения.

Я знаю, как это сделать вручную. Просто интересно, есть ли в Perl что-то удивительное в магазине?

Спасибо.

Ответы [ 3 ]

7 голосов
/ 15 июля 2010

карта позволит вам преобразовать каждый элемент в списке.

my $percent = 50;
my @original = qw/100 200 300 400 500/;
my @manipulated = map { $_ * $percent / 100 } @original;
4 голосов
/ 15 июля 2010

Как вы просили одну строку Perl, которая делает магию, вот она:

print join " ", map { int( $_ * 0.5) } (qw(100 200 300 400 500));

это дает

50 100 150 200 250
3 голосов
/ 15 июля 2010

Когда вы хотите преобразовать список, map - хорошая ставка.Вот пример:

my @list = ( 100, 200, 300, 400, 500 );
my @new  = map { int( $_ * 0.5 ) } @list;

print "@new";

Вывод:

50 100 150 200 250
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...