English 中文(简体)
内建方法,将所有数值都从高上、下游阵列中切除出来
原标题:Builtin method of culling all values outside lower and upper, perl array
  • 时间:2012-05-27 19:37:57
  •  标签:
  • perl

我得到了一个在 perl 中的数组, 包含分类的非相连值 。 例如 : < code>1, 2, 3, 5, 7, 11, 11, 13, 15 。

我想删除所有在 lower upper 之外的值,在返回的选择中保留 lower 。 我的做法看起来是这样(可能通过使用 selice 来改进):

my @culledArray;
for ( my $i = 0; $i < scalar(@array); $i++ ) { 
    if ( ( $array[$i] <= $_[1] ) and ( $array[$i] >= $_[0] ) ) { 
       push(@culledArray, $array[$i]);
    }
}

lower upper 分别包含在 $_[0] $_[1] 中。是否有可以这样做的perl 内含?

最佳回答

不知道有什么内置内容会这样做(这是相当具体的要求),但您可以通过使用 grep 节省一些打字费:

my @culledArray = grep {( $_ <= $_[1] ) and ( $_ >= $_[0] )} @array;

如果清单很长,而您不想复制,找到起始和终点指数,并使用selice ,可能很有趣。

问题回答

这是乱七八糟的, 但我的单元测试通过, 似乎有效 。 以 < code\ array 是分类列表和 < code>$_ [0] & gt; = $_ [1] 为基础, 取下值和上值索引, 然后从 < code\ culledArray 创建 [$lower. $upper] :

my @culledArray;
my $index = 0;
++$index until $array[$index] >= $_[0];
my $lowerIndex = $index;
while (($array[$index] <= $_[1]) and ($index < $#array)) { ++$index; }
my $upperIndex = $index;

@culledArray = @array[$lowerIndex .. $upperIndex];
return @culledArray;

我非常想知道这个 vs < a href=> https://stackoverflow.com/ a/10776755/1084945> > 的回答 < /a> 。 我几乎可以肯定,我不必绕过整个 < array (因为我在找到 $upperIndex 之前从 < code> 的索引中跳过。 我不知道在链接的回答工作中 < code> grep 的方法如何, 或 < code> < perl 如何执行上述代码中 < perl 的剪切线 来执行上述代码中的 < {culeedArray

看起来你可能正在使用百分位数或百分位数? 如果是这样的话, < a href="https://metacpan.org/module/Statistics% 3a% 3a 描述性" rel="nofollow"\\code>Statistics:: 描述性 也许有用 。

百分率 方法返回该百分率的数值和指数,以便您可以使用以下代码

use strict;
use warnings;

use Statistics::Descriptive;

my @data = qw/ 1 2 3 5 7 11 13 15 /;

my $stat = Statistics::Descriptive::Full->new;
$stat->add_data(@data);
my ($d25, $i25) = $stat->percentile(25);
my ($d75, $i75) = $stat->percentile(75);

my @subset = ($stat->get_data)[$i25 .. $i75];

print "@subset
";

<强 > 输出

2 3 5 7 11




相关问题
Why does my chdir to a filehandle not work in Perl?

When I try a "chdir" with a filehandle as argument, "chdir" returns 0 and a pwd returns still the same directory. Should that be so? I tried this, because in the documentation to chdir I found: "...

How do I use GetOptions to get the default argument?

I ve read the doc for GetOptions but I can t seem to find what I need... (maybe I am blind) What I want to do is to parse command line like this myperlscript.pl -mode [sth] [inputfile] I can use ...

Object-Oriented Perl constructor syntax and named parameters

I m a little confused about what is going on in Perl constructors. I found these two examples perldoc perlbot. package Foo; #In Perl, the constructor is just a subroutine called new. sub new { #I ...

Where can I find object-oriented Perl tutorials? [closed]

A Google search yields a number of results - but which ones are the best? The Perl site appears to contain two - perlboot and perltoot. I m reading these now, but what else is out there? Note: I ve ...