您的位置:首页 > 其它

Perl技巧 两个数组的取交集,并集与补集

2014-05-07 11:18 876 查看
利用perl 对两个数组进行操作。 目的是取2个数组只属于各自的元素,以及2个数组的共同元素。(可见下图)



代码:

#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;

my @a = (1,2,3,4,5,6,7,8,);
my @b = (1,9,0,4,15,6,12,8);
my %hash_a = map{$_=>1} @a;
my %hash_b = map{$_=>1} @b;
my %merge_all = map {$_ => 1} @a,@b;
my @a_only = grep {!$hash_b{$_}} @a;
my @b_only = grep {!$hash_a{$_}} @b;
my @common = grep {$hash_a{$_}} @b;
my @merge = keys (%merge_all);
print "A only :\n";
print Dumper(\@a_only);
print "B only :\n";
print Dumper(\@b_only);
print "Common :\n";
print Dumper(\@common);
print "Merge :\n";
print Dumper(\@merge);


运行结果 :

dxxu@rlsj-dxxu:/home/dxxu>{76}perl array_operation.pl
A only :
$VAR1 = [
2,
3,
5,
7
];
B only :
$VAR1 = [
9,
0,
15,
12
];
Common :
$VAR1 = [
1,
4,
6,
8
];
Merge :
$VAR1 = [
'6',
'3',
'7',
'9',
'12',
'2',
'15',
'8',
'1',
'4',
'0',
'5'
];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: