gpt4 book ai didi

arrays - Perl使用grep根据条件拆分数组

转载 作者:行者123 更新时间:2023-12-03 16:41:11 25 4
gpt4 key购买 nike

我有一些看起来像这样的 perl 代码:

my @array = map { rand } ( 1..100 );
my @matching = grep { $_ == $condition } @array;
@array = grep { $_ != $condition } @array;

这工作正常,但我想做的是基于单个操作将原始数组分成两个......我认为我正在执行两倍于严格必要的操作。

帮助赞赏!谢谢。

最佳答案

这是 part 来自 List::MoreUtils派上用场。

use List::MoreUtils qw'part';
my($even,$odd) = part { $_ % 2 } @array;
如果您希望输入的每个元素恰好位于输出的一个数组中,这将非常有用。

如果您想将它们放入多个数组中,则必须自己循环它们。
最好的方法是使用 foreach 环形。
my(@div2,@div3);
for my $elem (@array){
push @div2, $elem unless $elem % 2;
push @div3, $elem unless $elem % 3;
}
如果您必须做很多类似的检查,也许您也应该循环检查您的测试对象。
my %div;
for my $elem (@array){
for my $div (2,3,5,7,11,13){
push @{ $out{$div} }, $elem unless $elem % $div;
}
}

关于arrays - Perl使用grep根据条件拆分数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8617899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com