2
votes

Trouver la plus longue longueur de mot dans la liste Python

Pouvez-vous m'aider à comprendre comment ce code fonctionne?

words = ["dan","kar","dream","adsadsadad","AHAHAHAHAHAHHHAAHAHA","aaa"]
best = 0
for index in range(len(words)):
    if len(words[index]) > len(words[best]):
        best = index
print(words[best])


2 commentaires

cela peut aider si vous renommez best en longest_word_so_far


plus précisément, renommez best en index_of_longest_word_so_far . aussi, juste pour le plaisir, essayez max (words, key = len) - pas censé être une réponse mais amusant


8 Réponses :


1
votes

Pour chaque mot de la liste, vérifiez que, si la longueur du mot actuel est supérieure au mot le plus long que nous ayons vu jusqu'à présent, il s'agit du nouveau mot le plus long.

Fondamentalement, au lieu de stocker la longueur des mots dans une liste, nous la vérifions à chaque fois, puis déterminons le mot, avec la longueur la plus longue.


0 commentaires

0
votes

Nous avons ce code:

print(words[best])

Décomposons un peu ceci:

        best = index

Cela crée une liste de mots de différentes longueurs .

    if len(words[index]) > len(words[best]):

Cette variable contient l'index du mot de plus grande longueur que nous ayons rencontré jusqu'à présent.

for index in range(len(words)):

Le L'instruction for parcourra la liste de mots.

best = 0

Cette instruction if vérifie si le mot à l'index actuel est plus long que le mot de l'index vers lequel pointe best .

words = ["dan","kar","dream","adsadsadad","AHAHAHAHAHAHHHAAHAHA","aaa"]

Si le nouveau mot est plus long que notre meilleur mot jusqu'à présent, nous définissez le meilleur mot sur le nouvel index.

words = ["dan","kar","dream","adsadsadad","AHAHAHAHAHAHHHAAHAHA","aaa"]
best = 0
for index in range(len(words)):
    if len(words[index]) > len(words[best]):
        best = index
print(words[best])

Nous imprimons le mot en utilisant le meilleur index de mots enregistré.


0 commentaires

0
votes

best = 0 :

Cela signifie que, jusqu'à présent, la longueur la plus longue de la liste est 0. Cette valeur sera mise à jour dans la boucle.

pour l'index dans la plage (len (mots)) :

Dans votre exemple, len (mots) est égal à 6, c'est-à-dire le nombre de mots de votre liste "mots". La boucle passera donc de l'index 0 ("dan") à 5 ("aaa").

Ensuite, le programme vérifie si la longueur du mot courant est supérieure à la longueur du mot le plus long jusqu'à présent. S'il est plus long, vous enregistrez l'index actuel dans la variable «meilleur».

Enfin, il imprime le mot correspondant à cet index.


0 commentaires

0
votes

La boucle for y parcourt la liste d'index créée dynamiquement de 0 à la longueur de mots , qui est de 6. (la plage n'inclut pas le 6ème index. )

Ensuite, si la longueur du mot qui est dans l'index de valeur de l ' index est supérieure au mot le plus long précédemment sélectionné, le nouvel index du mot le plus long sera l'index courant.

/ p>

Trace: meilleur = 0 index = 0

La longueur des mots [index] (dan) est-elle supérieure à la longueur des mots [best] (dan)? Non. Passez à l'itération suivante.

meilleur = 0 index = 1

La longueur des mots [index] (kar) est-elle supérieure à la longueur des mots [best] (dan)? Non. Passez à l'itération suivante.

meilleur = 0 index = 2

La longueur des mots [index] (rêve) est-elle supérieure à la longueur des mots [best] (dan)? Oui. La nouvelle valeur de best est 2.


0 commentaires

0
votes

Votre code itère sur les indices 0, 1, 2, ..., length-1 de la liste nommée words .

La première fois qu'il considère le chaîne de longueur maximale comme celle qui est à l'index 0 c'est-à-dire en définissant best = 0 .

Dans chaque itération, il compare les longueurs de la chaîne courante présent à l'index best avec chaîne présente à l'index index et réinitialisation de la valeur de reste avec un nouvel index si condition len (mots [index ])> len (words [best]) est évalué à Vrai.

De cette façon, après la fin de la boucle for, vous obtenez un index exact de chaîne de longueur maximale.

Donc, si votre intention est d'obtenir la longueur maximale, vous pouvez également calculer la chaîne de longueur maximale et sa longueur.

Voici la seule ligne de code en utilisant réduire () et lambda que vous pouvez utiliser pour obtenir la longueur de la chaîne de longueur maximale disponible dans la liste.

>>> words = ["dan","kar","dream","adsadsadad","AHAHAHAHAHAHHHAAHAHA","aaa"]
>>> 
>>> reduce(lambda a, b: a if len(a) > len(b) else b, words)
'AHAHAHAHAHAHHHAAHAHA'
>>> 
>>> len(reduce(lambda a, b: a if len(a) > len(b) else b, words))
20
>>> 


0 commentaires

0
votes

Il y a déjà un certain nombre de bonnes réponses, mais en voici une autre utilisant l'argument key moins connu pour max:

>>> words = ["dan","kar","dream","adsadsadad","AHAHAHAHAHAHHHAAHAHA","aaa"]
>>> max(words, key=len)
'AHAHAHAHAHAHHHAAHAHA'

Modifier : j'ai manqué le commentaire de @Indominus dans ma réponse initiale, il devrait donc avoir tout le mérite: P


0 commentaires

1
votes

Le code ci-dessus fonctionne comme ceci

  1. Première initialisation best = 0
  2. Maintenant itération de la boucle for en fonction de la longueur de la liste de 0 à 5 index,
  3. si la longueur du mot pour l'index [0] est supérieure à la longueur de l'index du mot [best] signifie que le meilleur remplacera l'index actuel, comme ça
  4. le processus se poursuivra jusqu'à la fin de la boucle for
  5. À la fin, imprimer le mot de la meilleure valeur d'index actuelle

0 commentaires

0
votes

Ce n'est rien d'autre que l'algorithme de 'Recherche linéaire'.

Prenons le même exemple avec non pas des mots mais des nombres.

nums = [ 9,5,8,6,3,4 ]

#assuming the first element as our biggest number
biggest_number = nums[0]

for i in range(0, len(nums)):
  if nums[i] > biggest_number:  #comparing each number with the biggest number we assumed
    biggest_number = nums[i]   #if our current number bigger than biggest_number then replace the value

print(biggest_number)

Dans le code, vous comparez simplement les éléments un par un avec tous les autres éléments et vérifier si l'élément courant satisfait à la condition, qui dans ce cas est s'il est plus grand que les autres ou non, et remplacer les valeurs là où il ne le fait pas; et enfin renvoyer la dernière valeur qui satisfait la condition.

Dans votre code, il s'agit de la longueur de la chaîne.


0 commentaires