基本上,我有一个数组,例如@badvalues

我还有另一个数组,例如@values

基本上,我想要这样:

对于@badvalues中的每个元素


查看它是否在@values
如果是的话,将其删除
最终,我应该以数组@values结尾,该数组不包含数组@badvalues中的任何元素,或者以一个新数组@goodvalues包含数组@values的所有元素,而该元素不是。


我知道这听起来很简单,也许是因为我累了,但是在四处搜寻时似乎找不到明确的答案。

最佳答案

# Get only bad values
my %values = map {$_=>1} @values;
my @new_badvalues = grep { !$values{$_} } @badvalues;

# Get only good values
my %badvalues = map {$_=>1} @badvalues;
my @goodvalues = grep { !$badvalues{$_} } @values;

# An alternative
@badvalues{@badvalues} = ();
foreach $item (@values) {
    push(@goodvalues, $item) unless exists $badvalues{$item};
}


有关更完整的参考,请参见“ Perl Cookbook”的“第4.7章在一个数组中查找元素,而不是另一个数组”

10-04 19:59