免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6370 | 回复: 7
打印 上一主题 下一主题

两个数组对应怎么相加 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-10-11 10:20 |只看该作者 |倒序浏览
@a=(m,n,n,m,n,m,n);
@b=(3,4,5,6,7,8,9);
@c=(17,25 );

怎么实现 @c 呢

上面17是@a数组里面所有 m 对应的 @b 数组里面的 3+6+8 相加结果

上面25是@a数组里面所有 n 对应的 @b 数组里面的 4+5+7+9 相加结果
walklan 该用户已被删除
2 [报告]
发表于 2014-10-11 10:51 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
3 [报告]
发表于 2014-10-11 11:46 |只看该作者
回复 1# scriptshooks
  1. perl -le '@a=qw/m n n m n m n/;
  2. @b=qw/3 4 5 6 7 8 9/;
  3. map{$c[$a[$_]eq "m"?0:1]+=$b[$_]}0..$#a;
  4. print "@c"'
  5. 17 25
复制代码

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
4 [报告]
发表于 2014-10-11 13:18 |只看该作者
  1. @a=qw/m n n m n m n/;
  2. @b=qw/3 4 5 6 7 8 9/;
  3. my ($i,$tem,%a,@c);
  4. my %b = map {++$i,$_} @b;
  5. map{$a{$_} += $b{++$tem};}@a;
  6. foreach my $k (sort keys %a){
  7. #       print $a{$k}.$/;
  8.         push @c,$a{$k};
  9. }
复制代码

论坛徽章:
0
5 [报告]
发表于 2014-10-11 17:03 |只看该作者
多谢 walklan 、yinyuemi、 huang6894 几位的帮忙,长知识了

论坛徽章:
1
羊年新春福章
日期:2015-04-28 20:40:58
6 [报告]
发表于 2014-10-25 15:20 |只看该作者
  1. #!/usr/bin/perl  -w
  2. use strict;
  3. my @a = ('m', 'n', 'n', 'm', 'n', 'm', 'n');
  4. my @b = (3, 4, 5, 6, 7, 8, 9);
  5. my (%hash,@c);
  6. while (my $a = shift @a){
  7. my $b = shift @b;
  8.     $hash{$a} += $b;
  9. }
  10. foreach my $k (sort keys %hash){
  11. push @c,$hash{$k};
  12. }
  13. print join "\t",@c;
复制代码

论坛徽章:
7
巳蛇
日期:2013-11-28 09:22:59天秤座
日期:2014-10-25 15:40:452015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:172015亚冠之德黑兰石油
日期:2015-07-15 08:46:452015亚冠之平阳省
日期:2015-11-08 16:27:53白银圣斗士
日期:2015-11-14 09:58:12
7 [报告]
发表于 2014-10-25 15:40 |只看该作者
  1. #!/usr/bin/perl
  2. use strict;
  3. my @a = ('m', 'n', 'n', 'm', 'n', 'm', 'n');
  4. my @b = (3, 4, 5, 6, 7, 8, 9);

  5. my %hash=();

  6. for (my $i=0;$i<@a;$i++){
  7.         $hash{"$a[$i]"} += $b[$i];
  8. }

  9. my @c= values %hash;

  10. print "@c\n";
复制代码

论坛徽章:
8
技术图书徽章
日期:2013-09-30 08:51:28技术图书徽章
日期:2013-12-11 09:26:39白羊座
日期:2013-12-27 15:27:13金牛座
日期:2014-01-06 09:13:05天蝎座
日期:2014-01-21 14:23:28酉鸡
日期:2014-05-09 16:51:12卯兔
日期:2014-08-11 16:49:1515-16赛季CBA联赛之八一
日期:2017-08-14 23:24:57
8 [报告]
发表于 2014-10-25 23:38 |只看该作者
  1. my @a=qw(m n n m n m n);
  2. my @b=(3,4,5,6,7,8,9);
  3. my @c;

  4. while (my ($k,$v)=each @a){
  5.         $v eq 'm' ? ($c[0]+=$b[$k]) : ($c[1]+=$b[$k]);
  6. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP