Ho bisogno di aggiungere elementi univoci in un array da input che contengono diversi valori duplicati.Come evitare di inserire valori duplicati in un array Perl
Come evitare di inserire valori duplicati in un array Perl?
Ho bisogno di aggiungere elementi univoci in un array da input che contengono diversi valori duplicati.Come evitare di inserire valori duplicati in un array Perl
Come evitare di inserire valori duplicati in un array Perl?
è sufficiente utilizzare hash come questo:
my %hash;
$hash{$key} = $value; # you can use 1 as $value
...
Questo sovrascriverà automaticamente duplicati delle chiavi.
Quando è necessario stamparla, è sufficiente utilizzare:
foreach my $key (keys %hash) {
# do something with $key
}
Se è necessario ordinare le chiavi, utilizzare
foreach my $key (sort keys %hash) ...
Wow, questo deve essere un nuovo record: risposta accettata 4 anni dopo :) – mvp
Doveva essere sicuro che funzionasse. ; P –
push(@yourarray, $yourvalue) unless grep{$_ == $yourvalue} @yourarray;
Questo controlla se il valore è presente nella matrice prima spingendo. Se il valore non è presente, verrà spinto.
Se il valore non è numerico, utilizzare eq
anziché ==
.
Questa soluzione diventa molto inefficiente man mano che l'array cresce grande: il metodo hash deve essere preferito. –
utilizzando ~~ possiamo versione minima Perl è 5.10.1
use v5.10.1;
use strict;
use warnings;
my @ARRAY1 = qw/This is array of backup /;
my @ARRAY2;
my $value = "version.xml" ;
sub CheckPush($$)
{
my $val = shift (@_);
my $array_ref= shift (@_);
unless ($val ~~ @$array_ref)
{
print "$val is going to push to array \n";
push(@$array_ref,$val);
}
return (@$array_ref);
}
@ARRAY1 = CheckPush($value,\@ARRAY1);
print "out \n";
foreach $_ (@ARRAY1) {
print "$_ \n";
}
@ARRAY2 = CheckPush ($value,\@ARRAY2);
print "out2 \n";
foreach $_ (@ARRAY2) {
print "$_ \n";
}
In breve: 'push (@yourarray, $ yourvalue) a meno di $ yourvalue ~~ @yourarray;' – Codr
è possibile utilizzare la nozione di insieme: http://stackoverflow.com/questions/3700037/how-can-i- represent-sets-in-perl – akonsu
Esiste sempre la funzione uniq: List :: MoreUtils' se non si è contrari al CPAN. – squiguy