Bioops

Bioinformatics=(ACGAAG->AK)+(#!/bin/sh)+(P(A|B)=P(B|A)*P(A)/P(B))

使用perl模块迅速得到两数组的子集和并集

| Comments

省得自己写代码,循环、遍历,纠结于各种算法的效率上。

直接拿来主义,用已有的模块,List::Compare

既然发在CPAN上,估计是优化过的,而且反正perl的速度本来就不快,又只是自己用,简单易用省心,最好。

listcomp.pl
1
2
3
4
5
6
7
8
9
use List::Compare; #需要安装
@Llist = qw(abel abel baker camera delta edward fargo golfer);
@Rlist = qw(baker camera delta delta edward fargo golfer hilton);
$lc = List::Compare->new(\@Llist, \@Rlist); #使用数组的reference

@intersection = $lc->get_intersection; #子集
@union = $lc->get_union; #并集

print "@intersection\n@union\n";

List::Compare还有很多其他用法。

比如,get_unique(),返回第一个数组特有的那些元素;

而get_complement(),返回第二个数组特有的那些元素;

以及get_symmetric_difference(),返回属于某一数组但不同时属于两个数组的那些元素。

详见List::Compare

Comments