Perl 如何找出两个数组的交集、并集
文章目录
本文整理自 perlfaq4:
Q:如何计算两个数组的差异、交集以及并集?
A:使用 Hash。
my (@union, @intersection, @difference);
my %count = ();
foreach my $element (@array1, @array2) {
$count{$element}++;
}
foreach my $element (keys %count) {
push @union, $element;
push @{$count{$element} > 1 ? \@intersection : \@difference }, $element;
}
最终得到 @union
为两个数组的并集, @intersection
为两个数组的交集,
@difference
为所有只在一个数组中出现的元素。
PS:这个方法要求每个数组内部元素不相同!
文章作者 SeisMan
上次更新 2013-11-18