J’ai un tableau en Perl :
Comment supprimer les doublons du tableau ?
J’ai un tableau en Perl :
Comment supprimer les doublons du tableau ?
Vous pouvez faire quelque chose comme ça, comme l’a démontré en perlfaq4:
Sorties :
Si vous souhaitez utiliser un module, essayez le fonction de[
](https://metacpan.org/pod/List%3a%3aMoreUtils)
La documentation Perl est livré avec une belle collection de questions-réponses. Votre question est fréquemment posée:
% perldoc -q duplicate
La réponse, copier et coller à partir de la sortie de la commande ci-dessus, apparaît ci-dessous:
Elle se trouve dans /usr/local/lib/perl5/5.10.0/pods/perlfaq4.pod Comment puis-je supprimer les doublons d'éléments à partir d'une liste ou d'un tableau? (contribution de brian d foy) Utiliser une table de hachage. Lorsque vous pensez que les mots "unique" ou "dupliqué", pense "clés de hachage". Si vous n'avez pas de soins sur l'ordre des éléments, vous pouvez simplement créer de la valeur de hachage puis d'en extraire les clés. Il n'est pas important combien vous créer de hachage: il suffit que vous utilisez des "clés" pour obtenir les éléments uniques. mon %hash = map { $_, 1 } @tableau; # ou d'un hachage de tranche: @hash{ @array } = (); # ou un foreach: $hash{$_} = 1 foreach ( @tableau ); mon @unique = keys %hash; Si vous souhaitez utiliser un module, essayez le "uniq" fonction de "Liste::MoreUtils". Dans un contexte de liste, il renvoie les éléments uniques, la préservation de leur ordre dans la liste. Dans un contexte scalaire, retourne l' nombre d'éléments uniques. utilisation de la Liste::MoreUtils qw(uniq); mon @unique = uniq( 1, 2, 3, 4, 4, 5, 6, 5, 7 ); # 1,2,3,4,5,6,7 mon $unique = uniq( 1, 2, 3, 4, 4, 5, 6, 5, 7 ); # 7 Vous pouvez également passer par chaque élément et ignorer celles que vous avez vu avant de. Utiliser un hachage de garder une trace. La première fois que la boucle voit un élément, cet élément n'a pas de clé en %Vu. Le "prochain" instruction crée la clé et utilise immédiatement sa valeur, ce qui est "undef", de sorte que la boucle continue à les "pousser" et incrémente la valeur de cette clé. La prochaine la boucle voit que même élément, de sa clé existe dans la table de hachage et la valeur de cette clé est vrai (puisqu'il n'est pas 0 ou "undef"), de sorte que le prochaine ignore que l'itération et la boucle se passe à l'élément suivant. mon @unique = (); mon % = (); foreach my $elem ( @tableau ) { ensuite si $vu{ $elem }++; push @unique, $elem; } Vous pouvez écrire ce plus brièvement à l'aide d'un grep, qui fait de même chose. mon % = (); mon @unique = grep { ! $vu{ $_ }++ } @tableau;
Installer List::MoreUtils de CPAN
Puis dans votre code :
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.