免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1496 | 回复: 4

【笔记帖】关于数组的几个简单问题 [复制链接]

论坛徽章:
0
发表于 2013-05-07 12:25 |显示全部楼层
本来是来这里为下面我要说的东西寻求帮助的。。。
但是实在不甘心,混了这么久了,这都是些简单问题,怎么还来问呀!
算了,再搜下!(其实我准备问之前已经搜索过很多资料了。。。笨

终于找到了我想要的答案!
就干脆写成一个笔记帖算了。。。。

问题一:如何更简单地交换两个数组的值?
比如:
@a=(1,2,3);
@b=(4,5,6);
执行交换后,应该是:
@a是(4,5,6);
@b是(1,2,3);

我之前只知道用中间变量的笨办法:
  1.     @temp=@a;
  2.     @a = @b;
  3.     @b = @temp;
复制代码
当然我还妄想地试了下这种:
(@a, @b) = (@b, @a)
当然失败。。。数组放到()里面并且作为右值意味着连接他们。。。当然值全部给@a了。。。@b是空的。。。


然后在准备问之前又搜。。。终于。。。。(之前搜索都是用 how to exchange...,妈哟,最后发现应该用how to swap arrays做搜索词更能找到料,英文不好呀。。。)
请看这里:http://mail.perl.org.il/pipermail/perl/2004-February/004246.html
里面也解释了貌似上面的情况
  1. (@a, @b) = (@b, @a)
复制代码
在package variables (i.e. globals,| optionally localized) 是可用的!对于my定义的数组是不起作用的。具体可以查看:http://mail.perl.org.il/pipermail/perl/2004-February/004257.html



问题二:对数组进行排序。(有perl基础的可以忽略此问题。。。太基础了这问题。。。)
其实我之前没有看perl数组的处理,所以是完全按照C语言的风格行事,整出了这样的傻code:
  1. my ( $t1, $t2 ) = ( $arr_given[0], $arr_given[1] );
  2.     @$arr_given = ( $t1 < $t2 ? $t1 : $t2, $t1 > $t2 ? $t1 : $t2 );
复制代码
觉得perl不会这么傻,是我太傻,所以研究了下,原来perl有很多种对数组排序的方法。。。。。

http://www.misc-perl-info.com/perl-arrays.html里面看到的,摘录部分出来:
  1. @gemstones = sort (@gemstones);
  2. @gemstones = sort {$b cmp $a} @gemstones;
  3. @sortedNumbers = sort {$a <=> $b} @numbers;
  4. @numbers = sort {$b <=> $a} @numbers;
复制代码
唉。。。借此机会又温故了perl fqa,真的好东西
sinian126 该用户已被删除
发表于 2013-05-07 15:52 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2013-05-07 17:35 |显示全部楼层
回复 1# brantc


    问题一:如何更简单地交换两个数组的值?
为什么不交换数组的引用呢?
  1. my @a=(1,2,3);
  2. my @b=(4,5,6);

  3. my $a = \@a;
  4. my $b = \@b;

  5. ($a,$b) = ($b,$a);

  6. print "@$a\n";
  7. print "@$b\n";
复制代码

论坛徽章:
0
发表于 2013-05-07 18:01 |显示全部楼层
回复 3# kk861123

哥们儿,可以哈。:wink:
   

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
发表于 2013-05-07 18:04 |显示全部楼层
真的好东西
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP