永发信息网

perl 怎么计算数组中相同数字的个数

答案:5  悬赏:30  手机版
解决时间 2021-11-24 16:23
  • 提问者网友:雪舞兮
  • 2021-11-24 13:08
perl 怎么计算数组中相同数字的个数
最佳答案
  • 五星知识达人网友:梦中风几里
  • 2021-11-24 13:59
while(<>){
    chomp;
    unless(/^M/){
        @tmp=split;
        $count{$tmp[0]}++;##统计第一列数字个数
    }
 }
 print "$count{1}
";##1的个数
 
 
 你的代码没贴完 不知道到底是哪里。。追问大神 能不能再解释下每一行代码的意思,初学者谢了、、追答呃。。应该都是些基本的命令
建议你看下骆驼书追问上面程序貌似不行,或者是我不会用,能不能整个简单点的,谢啦!!!!追答你传一份data上来
全部回答
  • 1楼网友:像个废品
  • 2021-11-24 16:57
while应该修改为if吧
  • 2楼网友:青灯有味
  • 2021-11-24 15:25
错在:
while ($Mr_A[$i][0]==1){
$count++;
}
因为 $Mr_A[$i][0] 如果是 = 1 的话, 那永远也是等於 1, 因为你在回路中没有改变过$Mr_A[$i][0] 的值, 所以就不可能跳出来了.

你可以这麼做的
foreach my $row ( 0.. $#Mr_A ) {
my %item;
foreach my $col ( @{$Mr_A{$row}} ) {
++$item{$col}
}
print "In Row $row: $/";
print "\tThere are $item{$_} of $_$/" foreach sort {$a<=>$b} keys %item;
print $/;

}
  • 3楼网友:躲不过心动
  • 2021-11-24 15:08
while ($Mr_A[$i][0]==1) 这个数字0有问题 相对于只是数了每行的第一个
正确的做法是 两层for循环或者map等
  • 4楼网友:酒安江南
  • 2021-11-24 14:38
#!/usr/bin/perl
my @Mr_A = (
             [1,2,3,4,0],
             [2,3,4,0,1],
             [3,2,4,4,0],
             [0,2,3,1,4],
           );

my %count_hash;
for(my $i=0; $i<=$#Mr_A;$i++){ #行循环


   for(my $j=0; $j<=4; $j++) {  #列循环

             $count_hash{"column". $j . "_value".$Mr_A[$i][$j]} += 1;

    }
}
foreach my $key (sort keys %count_hash) {
      print "$key $count_hash{$key} ";

}

column0_value0  1
column0_value1  1
column0_value2  1
column0_value3  1
column1_value2  3
column1_value3  1
column2_value3  2
column2_value4  2
column3_value0  1
column3_value1  1
column3_value4  2
column4_value0  2
column4_value1  1
column4_value4  1

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯