首页 » Web前端 » php函数perl技巧_Perl根本实例计数

php函数perl技巧_Perl根本实例计数

访客 2024-12-13 0

扫一扫用手机浏览

文章目录 [+]

题目:统计下列字符串中所有字母涌现的次数

ATCCCGAAGGTAGATAACCGATTAGACG

php函数perl技巧_Perl根本实例计数

剖析:

php函数perl技巧_Perl根本实例计数
(图片来自网络侵删)

我们须要统计每个字母涌现的次数, 因此我们可以选用散列这个数据构造来进行数据的存储以及统计。

先定义数据和散列:

my $str = 'ATCCCGAAGGTAGATAACCGATTAGACG';my %hash;

我们先把字符串根据单个字符拆分成字符数组:

my @strs = split '', $str;

split 是系统内置函数, 浸染是将字符串根据给定的分隔符, 切分成数组。
第一个参数是分隔符, 第二个参数是被分隔的字符串, 返回值是被切分出来的数组。

这里我们利用空分隔符, 也便是会将每个字符单独分割出来成为单独的元素。
这样@strs数组中的每个元素, 都是单个的字符。

接下来, 我们遍历全体@strs数组, 统计每个字符

for my $char(@strs){ $hash{$char}++;}

++是自增运算符, 浸染是+1, 也便是下面2个办法是等效的:

my $num = $num + 1;my $num++;

$hash{$char}++

这行代码中,实在我们将所有的统计逻辑都写在的里面

下面我们用更啰嗦的办法看下这行代码的详细内容:

if $hash{$char} { $hash{$char} = $hash{$char} + 1;}else{ $hash{$char} = 1;}

上面这几行代码和$hash{$char}++是等效的。

为什么我们可以赓续定就直接自增呢?

我们详细根据if成立和不成立2种情形来看,

当if成立时, 也便是当前这个字符串作为key在我们的散列%hash中存在的, 那也便是说, 这个字符至少涌现了一次。
这个时候我们直接+1是没有问题的, 同时也将该字符这次涌现统计了进去当if不成立时, 也便是当前这个字符串作为key在我们的散列%hash中不存在, 那也便是说, 这个字符是第一次涌现, 那我们该当给他赋值1(就像我们上面的else中的代码一样)。
那为什么我们直接自增也可以呢?由于在Perl中, 当数据不存在(也便是undef)时, 在标量环境(记住, 一定是在标量环境下)下进行数字运算, 这个数据会被当作0来进行处理, 也便是说我们自增的时候相称于 0 + 1, 这样就即是直接赋值1了。

当我们遍历完全个数组时, 我们已经知道所有字符涌现的次数了。
下面我们将结果排序, 再打印出来:

for ( sort {$hash{$b} <=> $hash{$a} } keys %hash){ print "$_:$hash{$_}\n";}

sort也是系统内置函数, 浸染是用来排序, 花括号里面的内容为排序的规则(这边的意思是根据数字大小反向排序, 详细sort的用法往后详细说)。

这边我们利用sort将散列中的数据, 根据value的值, 从大到小排列往后, 再依次输出:

统计数据次数, 是Perl中利用散列数据唯一性这个特性比较常见, 也是比较高效的功能。

标签:

相关文章

大数据BU,引领未来商业变革的新引擎

随着科技的飞速发展,大数据已经渗透到了各行各业,成为推动企业创新、提升竞争力的关键因素。大数据BU(大数据业务单元)作为企业数字化...

Web前端 2024-12-15 阅读0 评论0

若何把php文件技巧_php的文件上传

这里首先声明一下这一章的内容比较多,比较难,你要抱着和自己去世磕的态度。细微之处不放过,多敲多练是王道。 学习就像爬山,得一步一步...

Web前端 2024-12-15 阅读0 评论0

图章艺术,传承与创新的历史见证

图章,作为我国传统艺术的重要组成部分,承载着丰富的历史文化内涵。从古代的官印、私印到现代的签名章,图章在各个历史时期都扮演着举足轻...

Web前端 2024-12-15 阅读0 评论0

rabbitmq削峰php技巧_RabbitMQ 专题1 削峰限流

流量洪峰举个栗子:双11、618购物节,会涌现特定时间点抢购某种商品的情形,瞬时流量巨大。用户端发起下单操作,做事端包括库存检讨,...

Web前端 2024-12-15 阅读0 评论0