Perl   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何检查两个数组在Perl中是否包含相同的元素?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我需要的是一个简单的方法来判断两个数组在perl中是否相同.顺序无关紧要,所以我正在寻找这样的东西:

我的@a =(1,2,3);

我的@b =(2,3,1);

我的@c =(1,4);

&相同(@ a,@ b)返回1

&相同(@ a,@ C)返回0

谢谢!

解决方法

你可以用散列计算元素的计数.有一个(element => count)哈希值,每次第一个数组有该元素时都会向上计数,而每次有另一个数据时都会向下计数(反之亦然).如果两个数组具有所有相同的元素,则散列中的每个值都将为0.
sub have_same_elements {
    my ($arr1,$arr2) = @_;
    my %counts = ();
    $counts{$_} += 1 foreach (@$arr1);
    $counts{$_} -= 1 foreach (@$arr2);
    return !(grep { $_ != 0 } values %counts);
}


$a_and_b_same = have_same_elements(\@a,\@b);  # will be true
$a_and_c_same = have_same_elements(\@a,\@c);  # will be false

(注意,这可能会或可能不适用于执行自己的字符串化的对象.散列键不能是引用,因此Perl在使用时将引用字符串化.它的默认字符串将引用转换为类似ARRAY(0x12345678)的引用,这使得引用除非它们是相同的东西.但如果一个对象做了自己的字符串化并且不为不同的引用返回不同的字符串,那么这可能会破坏.就这样你知道.)

大佬总结

以上是大佬教程为你收集整理的如何检查两个数组在Perl中是否包含相同的元素?全部内容,希望文章能够帮你解决如何检查两个数组在Perl中是否包含相同的元素?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。