perl数组排序(编写Perl程序实现双序列比对的,要用顺序比对算法)

2024-05-05 19:58:02 61

perl数组排序(编写Perl程序实现双序列比对的,要用顺序比对算法)

本文目录

编写Perl程序实现双序列比对的,要用顺序比对算法


咯,确实没懂,不过用perl排序还是比较容易的。如下:
如三行三列数据分别为id name age:
1 wang 20
2 zeng 21
3 cheng 18
比如数据的文件名为t1.txt可以进行如下操作:
open (FH ,“t1.txt“) or die print “error $!“ ;
my @all= 《FH》;
my @alldata;
foreach(0..$#all)
{
my @row = split “ “ , $all[$_];
my %rowdata;
$rowdata{“id“} = $row;
$rowdata{“name“} = $row ;
$rowdata{“age“} = $row ;
$alldata[$_] = \%r;
}
@alldata = {$rowdata{$a}《=》$rowdata{$b}}@alldata; #然后对得到哈希数组进行排序:
#然后输出:
foreach(@alldata )
{
print $_-》{“id“},“\t“,$_-》{“name“},“\t“,$_-》{“age“},“\n“;
}
#===================
#或者参考下面.
my @line;
while(《》)
{
chomp;
push @line, [ split ];
}
foreach ( sort { $a-》 《=》 $b-》 or $a-》 《=》 $b-》 or $a-》 《=》 $b-》 } @line)
{
print @$_, “\n“;
}

perl 怎么对 中文做排序


楼上正解。
如三行三列数据分别为id
name
age:
1
wang
20
2
zeng
21
3
cheng
18
比如数据的文件名为t1.txt可以进行如下操作:
open
(fh
,“t1.txt“)
or
die
print
“error
$!“
;
my
@all=
;
my
@alldata;
foreach(0..$#all)
{
my
@row
=
split


,
$all[$_];
my
%rowdata;
$rowdata{“id“}
=
$row;
$rowdata{“name“}
=
$row
;
$rowdata{“age“}
=
$row
;
$alldata[$_]
=
\%r;
}
@alldata
=
{$rowdata{$a}《=》$rowdata{$b}}@alldata;
#然后对得到哈希数组进行排序:
#然后输出:
foreach(@alldata
)
{
print
$_-》{“id“},“\t“,$_-》{“name“},“\t“,$_-》{“age“},“\n“;
}
#===================
#或者参考下面.
my
@line;
while(《》)
{
chomp;
push
@line,
[
split
];
}
foreach
(
sort
{
$a-》
《=》
$b-》
or
$a-》
《=》
$b-》
or
$a-》
《=》
$b-》
}
@line)
{
print
@$_,
“\n“;
}

把perl中hash的values按从大到小排列


my @keys = sort { $h{$b} 《=》 $h{$a} } keys %h; #sort the hash table
上面的那一行就是排序的代码。程序如下:
#!/usr/perl/bin
use strict;
use Data::Dumper;
my %h=(
“Alex“=》24,
“Sam“=》25,
“Bob“=》30,
“Andy“=》11,
“Wills“=》35,
“Mary“=》16,
“Helen“=》24
);
print(Dumper(\%h)); # output original hash
my @keys = sort { $h{$b} 《=》 $h{$a} } keys %h; #sort the hash table
for (@keys){print “$_ -》 $h{$_}\n“}
-------------------------------------------
另外,我没记错的话, 可以return一个这样的list:
return ($key, $value)
我倒没用过perl的oo特性,不过我想用class也可以的。

如何用Perl对字符串或者数字数组进行排序


可以看下下面的例子
@m = (“123“, “456“, “1234“, “abc“);
@n = sort(@m);
print “@n\n“;
@m = (123, 456, 1234);
@n = sort {$a 《=》 $b} @m;
print “@n\n“;

关于perl的<=>和sort


这属于perl的高级排序, {$a 《=》 $b}相当于是子程序,相当于sub by_sort{if($a《$b}){-1}elsif($a》$b){1}else{0}},后面的数组是参数,每次传两个元素的参数,且反复调用该子程序,直到数组元素传完为止。

perl数组怎么排重


 

#!perl
@a=(5,5,3,1,1,2,2,3,3);
%number;

for $k (@a) {
 next if exists $number{$k};
 $number{$k}= 1;
}

for $key(sort keys %number) 

 print $key;
 print “\n“;


perl如何实现经典排序算法


基于ASCII码排序
复制代码 代码如下:
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
use Data::Dumper qw(Dumper);
my @words = qw(foo bar zorg moo);
say Dumper \@words;
my @sorted_words = sort @words;
say Dumper \@sorted_words;
上边的例子将会打印
复制代码 代码如下:
$VAR1 = [
’foo’,
’bar’,
’zorg’,
’moo’
];
$VAR1 = [
’bar’,
’foo’,
’moo’,
’zorg’
];
第一个输出显示了排序前的数组,第二个是排序后的。
这是最简单的情形,但是可能未必是你想要的。 比如,如果一些单词以大写字母开头怎么办?
复制代码 代码如下:
my @words = qw(foo bar Zorg moo);
@sorted_names里的结果将是:
复制代码 代码如下:
$VAR1 = [
’Zorg’,
’bar’,
’foo’,
’moo’
];
你会发现,以大写字母开头的单词排在了第一位。 这是因为sort默认根据ASCII码表排序,所有的大写字母都排在小写字母前边。
比较函数
Perl的sort的工作方式是这样的,它遍历原始数组的每两个元素;每次把左边的值放入变量$a,把右边的值放入变量$b。 然后调用比较函数。如果$a的内容应该在左边的话,“比较函数”会返回1;如果$b应该在左边的话,返回-1,两者一样的话,返回0。
通常你看不到比较函数,sort会根据ASCII码表对值进行比较,不过如果你想的话,你可以显式的写出来:
复制代码 代码如下:
sort { $a cmp $b } @words;
这段代码会跟没有使用块的sort @words达到同样的效果。
这里你可以看到,默认perl使用cmp作为比较函数。这是因为正是cmp可以做这里边我们需要的工作。 它比较两边的字符串的值,如果左边参数“小于”右边参数,就返回1;如果左边参数“大于”右边参数,就返回-1;如果相等,就返回0。
按字母顺序排列
如果你想忽略字符串的大小写来排序——即通常所谓的字母序,你可以像下一个例子这么做:
复制代码 代码如下:
my @sorted_words = sort { lc($a) cmp lc($b) } @words;
这里为了比较,我们调用lc函数返回参数的小写版本。然后cmp比较这些小写版本并决定原始字符串谁先谁后。
结果是
复制代码 代码如下:
$VAR1 = [
’bar’,
’foo’,
’moo’,
’Zorg’
];
Perl对数值排序
如果对数值数组使用sort进行默认的排序,结果可能不是我们期望的。
复制代码 代码如下:
my @numbers = (14, 3, 12, 2, 23);
my @sorted_numbers = sort @numbers;
say Dumper \@sorted_numbers;
$VAR1 = [
12,
14,
2,
23,
3
];
仔细一想的话,这并不奇怪。比较函数看到12和3时,它按字符串进行比较。这意味着比较两个字符串的第一个字符“1“和“3“。 在ASCII码表里,“1“在“3“前边,因此字符串“12“会排在字符串“3“前面。
Perl不会很神奇地猜到你想按数字对这些值排序。
尽管我们可以写一个比较函数来按数字比较两个值。但这里我们使用《=》(也被称作宇宙飞船操作符), 它会按数字来比较两个参数并返回1、-1或者0。
复制代码 代码如下:
my @sorted_numbers = sort { $a 《=》 $b } @numbers;
结果是:
复制代码 代码如下:
$VAR1 = [
2,
3,
12,
14,
23
];

perl 中m行n列的列表按任一列排序怎么做啊


楼上正解。
如三行三列数据分别为id
name
age:
1
wang
20
2
zeng
21
3
cheng
18
比如数据的文件名为t1.txt可以进行如下操作:
open
(FH
,“t1.txt“)
or
die
print
“error
$!“
;
my
@all=
《FH》;
my
@alldata;
foreach(0..$#all)
{
my
@row
=
split


,
$all[$_];
my
%rowdata;
$rowdata{“id“}
=
$row;
$rowdata{“name“}
=
$row
;
$rowdata{“age“}
=
$row
;
$alldata[$_]
=
\%r;
}
@alldata
=
{$rowdata{$a}《=》$rowdata{$b}}@alldata;
#然后对得到哈希数组进行排序:
#然后输出:
foreach(@alldata
)
{
print
$_-》{“id“},“
“,$_-》{“name“},“
“,$_-》{“age“},“
“;
}
#===================
#或者参考下面.
my
@line;
while(《》)
{
chomp;
push
@line,
[
split
];
}
foreach
(
sort
{
$a-》
《=》
$b-》
or
$a-》
《=》
$b-》
or
$a-》
《=》
$b-》
}
@line)
{
print
@$_,

“;
}

perl 匹配两个数组


这种应该没有什么好的办法,数据量不大的话,编写一个函数isInArray($val, @array),来判断一个数值是否在数组里,存在就返回1,不存在就返回0。
然后遍历另一个数组,分别判断是否在另一个数组里存在。
数据量大的话也可以这样做,不过事先对两个数组进行排序,isInArray里也修改一下,返回上一次成功找到时,比较到哪里了,下次比较时,从上次结束的地方开始找。

perl数组排序(编写Perl程序实现双序列比对的,要用顺序比对算法)

本文编辑:admin

更多文章:


html导航栏下拉菜单怎么做(请问怎样做导航栏的下拉菜单)

html导航栏下拉菜单怎么做(请问怎样做导航栏的下拉菜单)

本文目录请问怎样做导航栏的下拉菜单html 导航条下拉列表怎么做如何用HTML编程实现下拉菜单html 怎么做鼠标悬浮菜单上的选项能出现下拉菜单请问怎样做导航栏的下拉菜单一般来讲实现导航栏指定是采用绝对定位的方式。示例代码如下:《div c

2023年8月27日 08:20

powerpoint2010中的段落对齐有几个种类(文档编辑段落对齐方式有哪五种)

powerpoint2010中的段落对齐有几个种类(文档编辑段落对齐方式有哪五种)

本文目录文档编辑段落对齐方式有哪五种电脑段落对齐方式有哪些word2010里通常有4种段落对齐方式分别是word2010段落格式中有哪几种对齐方式PPT文本段落格式的设置方法PPT的对齐方式有哪些ppt2010中的段落对齐有几个种类PPT文

2024年5月17日 21:39

peg人名翻译(我姓余,要取个英文名字,要把中文翻译和英文都写出来)

peg人名翻译(我姓余,要取个英文名字,要把中文翻译和英文都写出来)

本文目录我姓余,要取个英文名字,要把中文翻译和英文都写出来外国人名字有哪些我姓余,要取个英文名字,要把中文翻译和英文都写出来建议Yule 尤尔,拼音也可认为是“娱乐”BIOGRAPHICAL NAMES英美常见人名表A B C D

2024年5月19日 05:03

盘点十大食肉植物(食肉植物有哪些)

盘点十大食肉植物(食肉植物有哪些)

本文目录食肉植物有哪些除了茅膏菜外,自然界还有哪些食肉的植物食肉植物有哪些 食肉植物有啥自然界十大食肉植物 捕虫堇让虫子有去无回食肉植物品种大全食肉植物有哪些食肉植物有:猪笼草、狸藻、茅膏菜、瓶子草等,现在世界上发现的食物植物有600多种,

2024年6月28日 04:40

schedule用法及搭配(schedule作为动词的用法)

schedule用法及搭配(schedule作为动词的用法)

本文目录schedule作为动词的用法英文schedule 用法schedule的用法scheduled的用法和搭配schedule作为动词的用法schedule作为动词意思是预定;安排;编制目录。作动词用法是:1、schedule是及物动

2024年7月23日 06:57

ppt教程视频免费(想学习PPT,用什么软件比较好)

ppt教程视频免费(想学习PPT,用什么软件比较好)

本文目录想学习PPT,用什么软件比较好有没有实用的PPT讲解技巧想学习PPT,用什么软件比较好我是一名PPT发烧友,专注企业PPT定制。想学习PPT用什么软件好?如果用的是微软的Windows系统,那最好用Microsoft PowerPo

2024年7月8日 05:48

二进制的算术运算(二进制的计算方法)

二进制的算术运算(二进制的计算方法)

本篇文章给大家谈谈二进制的算术运算,以及二进制的计算方法对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录二进制的计算方法二进制的运算法则有哪

2024年8月4日 18:25

ios开发者预览版(iOS10.2 Beta2固件下载)

ios开发者预览版(iOS10.2 Beta2固件下载)

本文目录iOS10.2 Beta2固件下载苹果iOS9.1正式版什么时候发布iOS16Beta3新增的功能有哪些iOS10.2 Beta2固件下载iOS10.2 Beta2固件下载_iOS10.2 Beta2下载地址 苹果今天凌晨推送了iO

2024年7月22日 20:39

opengl入门教程(关于opengl 的问题)

opengl入门教程(关于opengl 的问题)

本文目录关于opengl 的问题OpenGL入门-4(20分)求openGL较为简单的入门教程,适合于自学,谢谢OpenGL入门 - 1关于opengl 的问题创建 窗口 是 WIN32 的问题吧,Opengl 只是 负责 绘制,光照,纹理

2024年4月11日 14:30

串口writefile函数(用WriteFile写串口后,提示错误“997“.问题出在哪)

串口writefile函数(用WriteFile写串口后,提示错误“997“.问题出在哪)

“串口writefile函数”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看串口writefile函数(用WriteFile写串口后,提示错误“997“.问题出在哪)!本文目录用WriteFile写串口后,提示错误“997“

2024年8月28日 11:45

网站服务器信息查询(怎样查一个网站的服务器大小啊)

网站服务器信息查询(怎样查一个网站的服务器大小啊)

本文目录怎样查一个网站的服务器大小啊怎么查自己网络的服务器地址怎样知道一个网站服务器是自己搭建的还是租用的,怎么查,详细说明能否通过IP地址或者域名查询到网站的服务器配置情况呀如何查看一个网站的的服务器信息如何查网站的服务器怎么找到网站的w

2024年7月1日 14:09

有哪些比较准确的手机地图导航软件?国内自驾游使用哪种导航最靠谱

有哪些比较准确的手机地图导航软件?国内自驾游使用哪种导航最靠谱

本文目录有哪些比较准确的手机地图导航软件国内自驾游使用哪种导航最靠谱怎样下载车载导航有哪些专业地图网站什么导航最好用,最准确现在最好用的导航是什么为什么百度地图导航金莎的语音那么好听,高德的那么难听百度地图怎么设置姜sir语音包百度地图语音

2024年7月1日 07:52

快船交易最新消息(快船队伦纳德还有交易价值吗)

快船交易最新消息(快船队伦纳德还有交易价值吗)

本文目录快船队伦纳德还有交易价值吗官宣!快船1.9亿签约达成,湖人双喜临门,哈登交易新方案出炉快船第一笔交易乔治换利拉德你们不要太过分「揭秘」格里芬交易始终的细节:双赢的交易何必难堪地分手官宣!大交易正式达成,快船双喜临门,火箭威少新交易方

2024年7月23日 14:33

开源电商小程序(现在开发一个小程序要多久多少钱)

开源电商小程序(现在开发一个小程序要多久多少钱)

本文目录现在开发一个小程序要多久多少钱微信小程序商城售货系统开发需要多少钱_微信小程序商城免费开源微信小程序:做一个简单的商城小程序需要多少钱现在开发一个小程序要多久多少钱目前开发一套小程序也不贵。目前主流的小程序制作有以下两种形式:1、定

2024年7月24日 02:38

opengl和vulkan(vulkan是什么意思)

opengl和vulkan(vulkan是什么意思)

本文目录vulkan是什么意思vulkan怎么开启和平精英opengl和vulkan哪个流畅vulkan/opengl现行方法Vulkan相比于OpenGL、DX12、Metal和Mantle有什么优势毁灭战士4vulkan和opengl哪

2024年3月15日 23:05

emphasis什么意思(point 和emphasis区别和用法)

emphasis什么意思(point 和emphasis区别和用法)

本文目录point 和emphasis区别和用法emphasis upon是什么意思请问这句话中emphasis placed on是什么意思point 和emphasis区别和用法point是点的意思,一般做动词用~名词的话:good p

2024年6月26日 06:25

银联官网首页(中国银联网是什么网站)

银联官网首页(中国银联网是什么网站)

本文目录中国银联网是什么网站请问哪个是中国银联在线支付的官方网站如何开通银联网上支付功能怎么申请开通银联在线支付银联在线 如何 绑定 借记卡 信用卡中国银联网是什么网站***隐藏网址***  中国银联-最权威的银行卡门户网站,提供全方位的银

2024年6月29日 03:52

qq在线客服怎么联系(怎么联系qq客服人员)

qq在线客服怎么联系(怎么联系qq客服人员)

大家好,今天小编来为大家解答以下的问题,关于qq在线客服怎么联系,怎么联系qq客服人员这个很多人还不知道,现在让我们一起来看看吧!本文目录怎么联系qq客服人员qq在线客服怎么联系QQ人工客服怎么联系腾讯客服的在线客服怎么联系qq客服在哪里找

2024年7月13日 01:45

am是什么意思的缩写(am中文意思是什么)

am是什么意思的缩写(am中文意思是什么)

本文目录am中文意思是什么英语am是什么意思英文缩写AM是什么意思am中文的意思是什么am pm是什么意思am是什么的缩写am中文意思是什么am的意思是“上午”。是antemeridiem的缩写。与之相对应的是pm,意思是“下午”。是pos

2023年6月26日 03:00

tower block(20号楼B座怎么翻译用block还是tower)

tower block(20号楼B座怎么翻译用block还是tower)

本文目录20号楼B座怎么翻译用block还是tower1E Kent Ridge Road NUHS Tower Block, Level 6 Singapore 119228这个地址的中文翻译是什么啊tower怎么读20号楼B座怎么翻译用

2023年9月13日 22:20

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2334
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1730
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1155
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1152
标签列表

热门搜索