19
2008
Comment supprimer les doublons d’une liste ou d’un tableau ?
Utilisez une table de hachage. Lorsque vous pensez à “unique” ou à “doublons”, pensez aux “clés de hachage”.
Si l’ordre des éléments ne compte pas, vous pouvez créer une table de hachage dont vous extrairez les clés. La manière de créer la table de hachage importe peu : il vous suffit d’utiliser keys
pour récupérer les éléments uniques.
my %hachage = map { $_, 1 } @tableau; # ou via une tranche de hachage : @hachage{ @tableau } = (); # ou via un foreach : $hachage{$_} = 1 foreach ( @tableau );
my @unique = keys %hachage;
Vous pouvez aussi parcourir tous les éléments et ne conservez que ceux que vous n’avez encore jamais vus. La première fois que la boucle traite un élément, cet élément n’a pas de clé correspondante dans %dejavu
. Le condition dans l’instruction commençant par next
crée cette clé et récupère immédiatement sa valeur (qui est undef
) avant de l’incrémenter. Comme cette valeur initiale est fausse, le next
n’a pas lieu et la boucle continue en exécutant le push
. Lorsque la boucle rencontre à nouveau le même élément, la clé correspondante existe dans la tableau de hachage et cette clé est vraie (puisque sa valeur incrémentée n’est plus undef), et donc le next interrompt cette itération et la boucle passe à l’élément suivant.
my @unique = (); my %dejavu = ();
foreach my $elem ( @tableau ) { next if $dejavu{ $elem }++; push @unique, $elem; }
Vous pouvez écrire cela de manière plus concise en utilisant grep, qui fera la même chose.
my %dejavu = (); my @unique = grep { ! $dejavu{ $_ }++ } @tableau;
Laissez un commentaire
Publicité :)
Articles récents
- Memento VI – Boostez Votre Productivité avec Vi : Trucs et Astuces à Connaître
- Configuration de Nginx pour Obtenir l’IP Réelle des Visiteurs avec CloudFlare
- Récupérer les informations d’un Ordinateur Terra à partir du numéros de série avec Python
- Grep – Extraire toutes les adresses IP d’un fichier text, Json, etc…
- Failed to Start File System Check – Vcenter 7
Mot-clefs
Commentaires récents
- Grep – Extraire toutes les adresses IP d’un fichier text, Json, etc… dans
- Grep – Extraire toutes les adresses IP d’un fichier text, Json, etc… dans
- Rotation des logs avec logrotate dans
- Hôte déconnecté sur le Vcenter. Impossible de se connecter à l’ESX. dans
- Pourquoi mon interface vlan ne veut pas devenir up ? dans