只显示出现两次的元素的疑问
时间:2011-02-11
来源:互联网
alfalfa rice hay beets corn hay);
@duplicates = grep { $count{$_} == 2 }
grep { ++$count{$_} >; 1 } @crops;
print "@duplicatesn";
这个只显示出现两次的元素,为什么出现3次以及3次以上的不显示?
比如corn,当第二次出现时候 $count{$_} == 2也成立,为什么它就不显示?
作者: baoyu05 发布时间: 2011-02-11
作者: zhlong8 发布时间: 2011-02-11
zhlong8 发表于 2011-02-11 13:56
那用一个grep 为什么不行?反正循环完了才会保存结果
grep { $count{$_}++ == 2 } @crops
作者: baoyu05 发布时间: 2011-02-11
grep { $count{$_}++ == 2 } @crops
baoyu05 发表于 2011-02-11 14:03
要获取出现次数的信息至少要循环一次吧,然后过滤还要再循环一次
作者: zhlong8 发布时间: 2011-02-11
如果不嫌麻烦超过2次的可以在 hash 中 delete 下,这样也只用循环一次,出现两次的都在 keys %hash 中了
sorry, 我搞错了……
作者: zhlong8 发布时间: 2011-02-11
...
zhlong8 发表于 2011-02-11 14:09
grep { $count{$_}++ == 2 } @crops
这个不是循环的同时在判断吗?
作者: baoyu05 发布时间: 2011-02-11
这个不是循环的同时在判断吗?
baoyu05 发表于 2011-02-11 14:18
你这个是出现至少3次就会返回的,包括4,5,6 。。。
作者: zhlong8 发布时间: 2011-02-11
zhlong8 发表于 2011-02-11 14:25
$count{$_}++ 是有可能4,5,6但是它不==2,就不会保存到数组了。那结果为什么不对呢
作者: baoyu05 发布时间: 2011-02-11
baoyu05 发表于 2011-02-11 14:34
知道 grep 干嘛的吗? 第三次遇到表达式就是真,相应的值就返回了,等发现第 4,5,6... 你后悔已经来不及啦
perldoc -f grep
作者: zhlong8 发布时间: 2011-02-11
zhlong8 发表于 2011-02-11 14:37
不是说循环完了才返回列表吗(二楼)
作者: baoyu05 发布时间: 2011-02-11
baoyu05 发表于 2011-02-11 14:40

作者: zhlong8 发布时间: 2011-02-11
zhlong8 发表于 2011-02-11 14:51

作者: baoyu05 发布时间: 2011-02-11
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28