【问题标题】:Looping through a perl array循环遍历 perl 数组
【发布时间】:2021-12-06 22:00:41
【问题描述】:

我正在尝试: 用数字 1 到 10 填充数组的 10 个元素。 通过遍历数组中包含的值来添加数组中包含的所有数字。

例如, 它会从 1 开始,然后第二个数字是 3(1 加 2),然后下一个是 6(现有的 3 加上新的 3) 这是我当前的代码

#!/usr/bin/perl
use warnings;
use strict;
my @b = (1..10);
for(@b){
    $_ = $_ *$_ ; 
}
print ("The total is: @b\n")

这就是结果

The total is: 1 4 9 16 25 36 49 64 81 100

我要找的是:

The total is: 1 3 6 10 etc..

【问题讨论】:

  • 一方面,+ 是加法运算符,* 是乘法运算符。

标签: perl sequence


【解决方案1】:

显示的序列对于每个元素都有:它的索引 + 1 + 前一个索引处的值

perl -wE'@b = 1..10; @r = 1; $r[$_] = $_+1 + $r[$_-1] for 1..$#b; say "@r"'

语法$#name 用于数组@name 中的最后一个索引。

如果数组原地改变,如图所示,则无需初始化

perl -wE'@b = 1..10; $b[$_] = $_+1 + $b[$_-1] for 1..$#b; say "@b"'

都打印

1 3 6 10 15 21 28 36 45 55

作为脚本

use warnings;
use strict;
use feature 'say';

my @seq = 1..10; 

for my $i (1..$#seq) {
    $seq[$i] = $i+1 + $seq[$i-1]; 
}

say "@seq";

【讨论】:

    【解决方案2】:
    $ perl -E'say "The total is: ",join" ",map$sum+=$_,1..10'
    The total is: 1 3 6 10 15 21 28 36 45 55
    

    【讨论】:

      猜你喜欢
      • 2013-12-11
      • 2015-11-21
      • 1970-01-01
      • 1970-01-01
      • 2013-02-09
      • 2013-12-18
      • 2016-08-20
      • 2014-06-04
      相关资源
      最近更新 更多