J'essaye de calculer la distance entre deux chaînes. La distance / différence entre deux chaînes fait référence au nombre minimum d'insertions, de suppressions et de substitutions de caractères nécessaires pour changer une chaîne en une autre.
La méthode que j'ai essayée est de: convertir deux chaînes en listes, comparer des listes, vérifier les différences, puis ajouter les différences
list_1 = ['k', 'i', 't', 't', 'e', 'n'] list_2 = ['s', 'i', 't', 't', 'i', 'n', 'g'] 1 {'e', 'k'}
le résultat que j'obtiens est:
first_string = "kitten" second_string = "sitting" list_1 = list(first_string) list_2 = list(second_string) print("list_1 = ", list_1) print("list_2 = ", list_2) print(" ") lengths = len(list_2) - len(list_1) new_list = set(list_1) - set(list_2) print(lengths) print(new_list) difference = lengths + int(new_list) print(difference)
Dont alors j'essaie de savoir comment ajouter ces différences pour qu'il soit égal à 3. Je ne sais pas comment rendre les sorties similaires pour les additionner (en ajoutant 1 avec {'e', 'k'} égal à une distance de 3).
3 Réponses :
Il semble que vous ayez juste besoin de changer cette ligne:
difference = lengths + int(len(new_list))
Cela devrait vous donner 3 comme vous voulez :)
Vous y êtes presque. Calculez la longueur de new_list en utilisant len () comme vous l'avez fait avec les longueurs:
difference = lengths + len(new_list)
C'est ce qu'on appelle la distance de Levenshtein. Consultez cette implémentation pour en savoir plus.