DietMountain的个人博客分享 http://blog.sciencenet.cn/u/DietMountain

博文

Perl 语言中利用自增对数组元素去重

已有 1602 次阅读 2020-12-16 15:26 |个人分类:计算机相关|系统分类:科研笔记

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

第一种是: 

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

第二种是:

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

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

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

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



https://blog.sciencenet.cn/blog-3414436-1262755.html

上一篇:ssh 远程连接时取消继承 locale 环境变量
下一篇:bash 脚本常用的四个选项
收藏 IP: 120.234.31.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-3-29 19:02

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部