余进
Perl 语言中利用自增对数组元素去重
2020-12-16 15:26
阅读:1686

Perl 语言中没有对数组元素进行去重操作的基础操作符/函数(话说这俩到底怎么界定……),可以写一个子程序来实现,但是似乎又有点费事,杀鸡用牛刀的感觉。最近发现两种利用自增特性来进行去重的操作,非常简洁,而且一眼还不一定看得懂,记录一下。

第一种是: 

my @uniq = grep {++$hash{$_}<2} @array;

第二种是:

my @uniq = grep {!$hash{$_}++} @array;

第一种其实挺好理解,若某元素之前已经出现过,则自增后的哈希值会返回 2,因此该元素不会被返回到新的数组中。

第二种我看了好久也没看懂。翻阅小骆驼书关于自增的知识后才恍然大悟,其实这两种都是利用了自增操作的返回值。前一种是前置自增,即先自增,再返回自增后的值;后一种是后置自增,即先返回当前值,再自增。

另外,模块 List::MoreUtils 提供 uniq 函数。

转载本文请联系原作者获取授权,同时请注明本文来自余进科学网博客。

链接地址:https://wap.sciencenet.cn/blog-3414436-1262755.html?mobile=1

收藏

分享到:

当前推荐数:0
推荐到博客首页
网友评论0 条评论
确定删除指定的回复吗?
确定删除本博文吗?