Comparer 2 tableaux et de supprimer les matches
-
13-12-2019 - |
Question
J'ai 2 tableaux (@system
,@reserve
).Chacun contient une liste de numéros et j'aimerais comparer et d'épissure de sortir (peut-être?) les nombres dans @reserve
qui correspondent à des nombres dans @system
.
J'ai essayé quelques-uns des réponses à trouver et coller des questions, mais ils ne semblent pas être au travail.À L'Aide De Perl 5.12.4.
Les numéros dans @reserve
sera toujours 11000..136000 et les nombres dans le système sera toujours dans la @system
gamme mais peut varier.Le code que j'ai mis l'accent sur ressemble:
my @system = query();
my @reserve = 11000..136000;
foreach my $num (@system) {
my $index = 0;
$index++ until $reserve[$index] eq $num;
splice (@reserve,$index,1);
}
query() demande juste le système PBX () pour une liste de nombres et les pousse à @system
.
Toute aide est appréciée.
Merci,
Marty
La solution
Vous n'avez pas à travailler avec splice
lorsque vous utilisez un hashslice à la place:
my @system = query();
my %reserve ;
@reserve{(11000..136000)} = undef ;
delete @reserve{@system} ;
my @list_of_reserve = sort { $a <=> $b } keys %reserve ;
Autres conseils
Comment à ce sujet:
my @system = query();
my @reserve = 11000..136000;
my %tmp = map{$_ => 1}@system;
@reserve = grep{!exists $tmp{$_}}@reserve;