Bonjour,
J'ai un tableau @Date et je souhaite comparer les valeurs de ce tableau afin de déterminer celles qui sont identiques.
Comment j epeux faire ?
Merci
Bonjour,
J'ai un tableau @Date et je souhaite comparer les valeurs de ce tableau afin de déterminer celles qui sont identiques.
Comment j epeux faire ?
Merci
ton tableau @data c une liste ou un tableau a 2D? car si c une ligne tu fais une boucle foreach avec un split au tabulation si nn tu verifie case a case
Bonjour,
en admettant que tu cherches à mettre en évidence les valeurs de ton tableau trouvées plus d'une fois, voici un petit exemple parmi d'autres pour parvenir à tes fins :
NOTE : %Hash contient désormais tes valeurs initiales issues de @Date sans doublons. Tu pourrais fort bien t'en servir ensuite pour te reconstituer ton @Date sans les doublons :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 use strict; my @Date = (1,1,2,3,4,7,9,10,11,11,11); my %Hash; foreach(@Date) # ici on comptabilise chaque valeur topée dans @Date { ++$Hash{$_}; } foreach(sort(keys %Hash)) # et ici, on affiche celles topées + d'1 fois { print "$_ rencontrée $Hash{$_} fois dans \@Date\n" if ($Hash{$_} > 1); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 @Date = sort(keys %Hash); # @Date contient désormais 10,11,1,2,3,4,7,9
Toi aussi, découvre la subtilité et la puissance des tableaux associatifs * !!Envoyé par bassejc
* ou encore hash, hachage, moulinette (pas sûr pour ce dernier)
en fait j'ai récupéré dans un tableau la valeur d'un tableau de hachage :
foreach $dateNorm (sort {$a <=> $b} values %{$$entities{'date'}}) {
$$DateNorm[$i]=$dateNorm;
$i=$i+1;
Je ne veux pas supprimer les doublons justement, je veux récupérer les mêmes dates, à savoir indiquer que dans ce tableau il y ces 2 dates là qui sont identiques ou alors préciser que toutes les dates sont différentes.
et oui en effet merci pour ce savoir puissant!
Regarde le dernier print() dans le code d'Arioch et tu verras qu'il fait déjà ce que tu veux, sa remarque sur les clés de %Hash n'est qu'un aparté.Envoyé par DelphLaga
Par ailleurs :
Est-ce bien raisonnable ? Avoir deux variables qui ne diffèrent que par la casse d'une lettre ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part $$DateNorm[$i]=$dateNorm;
Par ailleurs utilises-tu bien "use strict" ? Si tu ne le fais pas, sache que ça peut t'éviter beaucoup d'ennui, pour un coût minime.
--
Jedaï
en gros, tu veux recuperer les doublons qu'il y a dans ton tableau?
oui voilà c'est ça
voici une fonction qui liste les doublons d'un tableau. pour l'utiliser, tu l'appelle ainsi :et t'aura les doublons de ton tableau @ton_tableau dans @mesdoublons
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 my @mesdoublons = &liste_doublons(\@ton_tableau);
voilà
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 # #Liste les doublons sub liste_doublons { my $reference_tableau = shift; my %temp; my @doublons; foreach my $case (@$reference_tableau){ if ($temp{$case}++ == 1){ #$temp{$case}++ met la valeur associé à $case à i+1 push (@doublons, $case);#et renvoie i, sachant que l'on considère que i est } #à 0 lorsqu'il n'a pas encore été initialisé. Donc #la première fois que tu rencontres un élément a dans la liste @$reference_tableau, $temp{a} est mis à 1 #et le push n'est pas exécuté (car 0 != 1), la deuxième fois qu'on rencontre a, le push est exécuté. #Les fois suivantes il ne l'est plus. Donc au final on a tous les doublons en un exemplaire dans @doublons. } return @doublons; }
Yes !! Super ça fonctionne !
Merki @ tous !!
Bizz
J'ai rajouté dans les snippet deux fonctions pour gérer les doublons dans un tableau.
Peux tu mettre le tag résolu à ton topic s'il te plait
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager