《Perl语言入门》读书笔记(六)哈希
1.哈希特点
哈希是一种数据结构,与数组相同点,能容纳任意多的值;而哈希的检索方式与数组不同。数组是以数字下标检索,而哈希中的值(value)以唯一的名字(key)检索。
key-value一一对应:
乱序排列,类似一桶数据:
由于检索方式不同,当使用哈希时,能提高对大数据量中的读写性能。
2.哈希的使用
%some_hash = ('foo', 35, 'bar', 12.4, 2.5, 'hello', 'wilma' ,1.77878e12, 'da', "ada\n"); #创建一个哈希数组,以前key后value,一一对应#改进版创建哈希
my %last_name = ('fred' => 'filtstone', # '=>'等效于‘,’,更能区分key与value'betty' => 'rubble', 'dino' => undef,
);$hash{$some_key}; #访问哈希中的元素@any_array = %some_hash; #以无序形式返回键-值对应的列表,key与它对应的value相邻
3.哈希操作函数
3.1 keys和values函数
keys函数能返回哈希的键列表,values函数能返回对应的值列表。
my %hash = ('foo', 35, 'bar', 12.4, 2.5, 'hello', 'wilma' ,1.77878e12, 'da', "ada\n"); my @k = keys %hash; #返回值包含所有奇数位置的keymy @v = values %hash;#返回所有偶数位置的value,返回顺序不固定,但key与value的相对位置保持一致
3.2 each函数
each函数能遍历哈希中的每个键-值对,返回两个元素,一个是键名,一个是值。
while (($key,$value) = each %hash){print"$key => $value\n";
}
3.3 exists函数
若要检查哈希中是否存在某个键,可以使用exists函数检查,键存在就会发返回真,键不存在返回假,与值无关。
if (exists $books{"dino"}){print"Hey,there's a library card for dino!\n";
}
3.4 delete函数
delete函数能从哈希中删除指定的键与对应的值。
my $person = "dada";
delete $book{$person}; #该键-值对被删除
3.5哈希元素内插
foreach $person (sort keys $books){if($books{$person}){print"$person has $books{$person} item\n";}
}
《Perl语言入门》读书笔记(六)哈希相关推荐
- 阮一峰ES6入门读书笔记(十六):Moudle
阮一峰ES6入门读书笔记(十六):Moudle 在 ES6 之前,社区制定了一些模块加载方案,最主要的有 CommonJS 和 AMD 两种.前者用于服务器,后者用于浏览器.ES6 在语言标准的层面上 ...
- Go语言实战读书笔记
2019独角兽企业重金招聘Python工程师标准>>> Go语言实战读书笔记 第二章 通道(channel).映射(map)和切片(slice)是引用类型.引用类型的对象需要使用ma ...
- 3d游戏设计读书笔记六
3d游戏设计读书笔记六 一.改进飞碟(Hit UFO)游戏: 游戏内容要求: 按 adapter模式 设计图修改飞碟游戏 使它同时支持物理运动与运动学(变换)运动 更改原 UFO_action 类 为 ...
- QT Creator快速入门读书笔记:新建HelloWorld工程
窗口部件 QMainWindow是带有菜单栏和工具栏的主窗口类,QDialog是各种对话框的基类,QWidget类是所有用户界面对象的基类,被称为基础窗口部件.QWidget继承自QObject类和Q ...
- QT Creator快速入门读书笔记:窗口部件初探
QWidget基础窗口部件 Qt把没有嵌入到其他部件中的部件称为窗口,一般窗口都有边框和标题栏,就像程序中的widget和label一样.QMainWindow和大量的QDialog子类是最一般的窗口 ...
- 阮一峰ES6入门读书笔记(七):运算符的拓展
阮一峰ES6入门读书笔记(七):运算符的拓展 1. 指数运算符 ES6新增了一个指数运算符(**). 2 ** 2 // 4 2 ** 3 // 8 这个运算符的一个特点是右结合,而不是常见的左结合. ...
- c语言指针读书笔记,《C与指针》读书笔记一
我平时不太看书.倒不是我没有读书的习惯.而是如今的社会知识传播的方式太多.书已经不是唯一知识的载体.至于"书是人类知识的阶梯"这句名言的时代已经过去了.每天各种微信公众号推介的文章 ...
- 基因检测之《生命的语言》读书笔记
自从高中毕业选择生物工程专业入行,到研究生阶段微生物学的学习,再到工作开始做基因检测方面的工作,很庆幸基本上在生命科学领域学习和工作.每月去一次的图书馆,让我对科技的好奇心得以保持,互联网的畅达,让我 ...
- c语言指针读书笔记,《C与指针》读书笔记九
原标题:<C与指针>读书笔记九 指针之所以在C语言中占据很大分量,是因为指针有很大的灵活性.指针以结构体结合确实为程序的编写提供了一把锋利无比的宝剑.在有些资料上介绍结构体是多种数据集合, ...
- c语言程序设计读书笔记3000字,C语言程序设计读书笔记题目
读书笔记注意事项: 1. 读书笔记要求至少有六个题目,在一类.二类.三类题目中各选两题,具体题目选择由学生自行选择. 2. 每个题目必须包含所选题目,以及具体题目的程序实现过程,要求每行语句后都需要有 ...
最新文章
- linux下启动jconsole报 java.lang.UnsatisfiedLinkError
- cocos2d-x游戏开发(九)重要的基类CCNode
- 演练 制作爱奇异视频播放列表 0929
- 滴滴开源夜莺 Nightingale:企业级监控解决方案
- unity常用的引用赋值一个GameObject的三种方法
- centos 7 安装pip
- Cnskype移动办公现状分析管理
- 鼎捷易飞ERP视频教程-金速鹏-专题视频课程
- cJSON使用详细教程 | 一个轻量级C语言JSON解析器
- 利用IE登陆windows 2003 的终端服务器
- 数学建模——国赛写作模板篇
- Vuex_Todos
- Brute-Force模式匹配算法
- C语言程序设计现代方法(第二版)十二章课后练习题部分答案
- [转]MATLAB 主要函数指令表(按功能分类)
- som聚类用matlab实现,使用SOM对数据进行聚类
- shineblink HC-SR505人体红外感应传感器
- sqlyog安装和破解
- 北大才女笔记:这样学习线性回归和梯度下降(上篇)
- mysql语句group by用法详解
热门文章
- Oracle PrimaveraUnifier 之数据要素(Data Element)
- 椭圆曲线加密概览(二)
- java(某人在玩游戏的时候输入密码112233后成功进入游戏(输错3次则被强行退出),要求用程序实现密码验证的过程。)
- java中mdc是什么_MDC是什么鬼?用法、源码一锅端
- 大学生数学建模优秀论文发表
- 汽车驾驶学习-驾驶技巧:倒车速成
- html页面怎么加锚点,html页面添加锚点
- 墨天轮高分技术文档分享——Oracle升级迁移篇(共96个)
- 【红外技术】红外热成像在雨雾天的能看多远?
- 支付宝小程序自定义Map地图marker