+ -
当前位置:首页 → 问答吧 → perl 如何把2个数组的元素相加的值,变成新数组的元素

perl 如何把2个数组的元素相加的值,变成新数组的元素

时间:2011-02-26

来源:互联网

例如
my @a=(1,2,3);
my @b=(1,2,3);
新数组:
@c=(2,4,6);

作者: zpy123456   发布时间: 2011-02-26

用子过程写

作者: zpy123456   发布时间: 2011-02-26

Perl code
for my $i (0..$#a) {
  $c[$i] = $a[$i] + $b[$i];
}

作者: czl21   发布时间: 2011-02-26

Perl code

my @a=(1,2,3);
my @b=(1,2,3);
my @c;
foreach my $i (0..$#a)
{
  $c[$i]=$a[$i]+$b[$i];
}
print("@c\n");



楼主还是用点心学习吧。美好的生活还得自己来创造。

作者: fibbery   发布时间: 2011-02-26

Perl code
sub add
{
    my $arr1 = shift @_;
    my $arr2 = shift @_;
    my @result;
    for (my $i=0; $i<=$#{$arr1}; ++$i)
    {
        push @result, ${$arr1}[$i] + ${$arr2}[$i];
    }
    
    return @result;    
}

作者: getline   发布时间: 2011-02-26

至少应该学会最基本的循环。循环会写之后可以写的稍微高级点:
Perl code
my @a = (1, 2, 3);
my @b = (1, 2, 3);

my @c = map { $a[$_] + $b[$_] } 0..$#a;

作者: iambic   发布时间: 2011-02-26

要是Lisp里就更简单了:
Assembly code
user=> (def a [1 2 3])
#'user/a
user=> (def b [1 2 3])
#'user/b
user=> (map + a b)
(2 4 6)

作者: iambic   发布时间: 2011-02-26

引用 4 楼 getline 的回复:
Perl code
sub add
{
my $arr1 = shift @_;
my $arr2 = shift @_;
my @result;
for (my $i=0; $i<=$#{$arr1}; ++$i)
{
push @result, ${$arr1}[$i] + ${$arr2}[$i];
}
……

Can't use string ("7") as an ARRAY ref while "strict refs" in use at C:\Documents and Settings\john_1\桌面\perl\h.pl line 42.

作者: zpy123456   发布时间: 2011-02-26

引用 5 楼 iambic 的回复:
至少应该学会最基本的循环。循环会写之后可以写的稍微高级点:

Perl code
my @a = (1, 2, 3);
my @b = (1, 2, 3);

my @c = map { $a[$_] + $b[$_] } 0..$#a;

请用子过程写,谢谢

作者: zpy123456   发布时间: 2011-02-26

都说到这份上了你还不会,帮你也没意义。

作者: iambic   发布时间: 2011-02-26

还有就是要比较一下那个数组的元素多,子过程,再写啊?

作者: zpy123456   发布时间: 2011-02-26