Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Re: fonctions de traitement de tableau

1 réponse
Avatar
Paul Gaborit
> Andre <alec...@sympatico.ca>:
>
> >> - permettant de savoir si un element est present dans un tableau (ou
> >> intersection de tableau)
>
> > C'est dans la FAQ : perlfaq4.
>
> La FAQ donne trois algos, il n'existe pas quelque part (CPAN...) une
> fonction standard qui en implemente un ?


...trois algos... et de nombreux bons conseils. Pourquoi ? Tout simplement
pour vous amener à réfléchir aux conditions dans lesquelles vous voulez
effectuer votre vérification de présence. Car, selon ces conditions, telle ou
telle méthode sera excellente, correcte ou désastreuse par rapport à une autre.

Le cas le plus simple (mais qui est rarement le besoin réel) : savoir une fois
et une seule dans un script si une valeur est présente dans un tableau. Dans
ce cas, vous pouvez utiliser le module List::Util et sa méthode 'first' :

use List::util;

...
my @liste = ...; # une liste de valeurs...
my $elem = ... ; # la valeur à chercher
my $present = first {$_ eq $elem} @liste;
if (defined $present) {
# $elem est dans @liste
}

Si cette vérification doit se faire de nombreuses fois, le passage par une
table de hachage est beaucoup plus rapide.

Mais ce que vous évoquez est sûrement différent... Par exemple, si vous devez
réaliser l'union ou l'intersection de deux listes. Il y a alors des
algorithmes plus spécifiques (plus rapides)... surtout si les deux listes sont
déjà triées par exemple.


--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

1 réponse

Avatar
Paul Gaborit
À (at) Fri, 01 Jul 2005 14:38:56 +0200,
Paul Gaborit écrivait (wrote):
...trois algos... et de nombreux bons conseils. Pourquoi ? Tout simplement
[...]

Désolé pour le bégaiement...

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>