
Envoyé par
Sve@r
Bonjour
On voit bien on voit bien... ce qu'on voit surtout c'est que tu affiches self.list_DDT[d].name mais que tu testes self.list_DDT[d].return_name(). Or la base d'une vérification c'est d'afficher ce qu'on teste avec exactitude.
Pour faire suite à la remarque d'Arioch, je te conseillerais l'instruction print("[%s]" % label_ddt, type(label_ddt)) suivie de print("[%s]" % self.list_DDT[d].return_name(), type(self.list_DDT[d].return_name())). Et si, comme je le pense, ce sont déjà des strings, alors pas besoin de str() lors du test.
Et si self.list_DDT[d].name est équivalent à self.list_DDT[d].return_name() alors pas besoin de passer par return_name() (on n'utilise pas une fonction alors qu'on a déjà la valeur dans une variable).
Ensuite, question algo, boucle sur liste 1 et pour chaque élément boucle sur liste 2 donc algo en O(n²) ce qu'on nomme "l'algo brute force" ou encore plus simplement "l'algo con". En utilisant des listes triées, tu peux faire un appareillage (on lit alternativement la première ou la seconde selon qui est plus petit que qui) ce qui ramène l'algo en O(n). Et en utilisant intelligemment les ensembles tu peux leur associer des opérateurs de différence ou d'intersection ce qui supprime carrément les boucles.
Partager