1
votes

Sauter les index dans la boucle for sans que je veuille que cela se produise

J'ai donc ce code:

kjørte - index: 4   not in  soutLst
kjørt - index: 1   not in  soutLst
kjørt - index: 1   not in  soutLst
kjørte - index: 4   not in  soutLst
kjørt - index: 1   not in  soutLst
----------
kjøres - index: 0
kjørt - index: 1
kjørende - index: 2
kjører - index: 3
kjørte - index: 4
kjøre - index: 6
kjør - index: 11

et j'obtiens ce résultat:

lst = ["kjøres", "kjørt", "kjørende", "kjører", "kjørte", "kjørte", "kjøre", "kjørt", "kjørt", "kjørte", "kjørt", "kjør"]
soutLst = []

for i in lst:
    holder = str(i + " - index: " + str(lst.index(i)))
    if holder not in soutLst:
        soutLst.append(str(i + " - index: " + str(lst.index(i))))

    else :
        print(holder + " not in  soutLst")

print("----------")
for x in soutLst:
    print(x)

et comme vous pouvez le voir, il saute certains index , une idée de comment je peux réécrire pour ajouter toutes les chaînes de la liste soutLst? Je pense que c'est parce que certains des éléments de Lst sont les mêmes, mais je ne trouve pas de solution de contournement.

Il devrait afficher les 12 éléments de soutLst

De plus, il affiche les mêmes lorsque j'essaye de lister ceux qui ne sont pas inclus dans la déclaration finale for


1 commentaires

Vous pouvez utiliser enumerate pour obtenir à la fois des index et des éléments lorsque vous parcourez la liste @klindalen


3 Réponses :


0
votes

Vous ne savez pas pourquoi vous créez la chaîne holder , vérifiez son existence dans soutLst , et vous avez également un else supplémentaire pour ne pas savoir quoi raison

Au lieu de tout cela, vous pouvez utiliser enumerate qui vous fournit à la fois l'index et la valeur de la liste lorsque vous la parcourez, et l'utiliser pour créer votre soutLst code>

----------
kjøres - index: 0
kjørt - index: 1
kjørende - index: 2
kjører - index: 3
kjørte - index: 4
kjørte - index: 5
kjøre - index: 6
kjørt - index: 7
kjørt - index: 8
kjørte - index: 9
kjørt - index: 10
kjør - index: 11

La sortie sera

lst = ["kjøres", "kjørt", "kjørende", "kjører", "kjørte", "kjørte", "kjøre", "kjørt", "kjørt", "kjørte", "kjørt", "kjør"]
soutLst = []

for idx, item in enumerate(lst):
    soutLst.append(item + " - index: " + str(idx))

print("----------")
for x in soutLst:
    print(x)


0 commentaires

0
votes

Alors je l'ai réécrit et je l'ai simplifié moi-même, apparemment j'ai surchargé le problème: Voici une solution qui fait ce que je voulais:

kjøres - index: 0
kjørt - index: 1
kjørende - index: 2
kjører - index: 3
kjørte - index: 4
kjørte - index: 5
kjøre - index: 6
kjørt - index: 7
kjørt - index: 8
kjørte - index: 9
kjørt - index: 10
kjør - index: 11

Ce qui donne ce résultat:

lst = ["kjøres", "kjørt", "kjørende", "kjører", "kjørte", "kjørte", "kjøre", "kjørt", "kjørt", "kjørte", "kjørt", "kjør"]

for i in range(len(lst)):
    print(str(lst[i] + " - index: " + str(i)))


7 commentaires

Pas besoin même de faire une itération range @klindalen, utilisez simplement enumerate , vérifiez ma réponse ci-dessus :)


Merci pour cela, décemment nouveau dans Python, donc je n'avais pas vraiment examiné enumerate. C'était juste la façon dont je savais comment le faire, je cherchais maintenant dans la documentation et cela semble être quelque chose que je devrais utiliser davantage :)


Cela a parfaitement fonctionné, c'était une simple erreur de ma part, j'ai pensé que je pouvais définir deux messages différents comme réponse. J'ai redéfini le vôtre pour être la réponse lorsque j'ai remarqué l'erreur


@DeveshKumarSingh Sur mon écran, il dit que vous êtes accepté


Non monsieur, je vois la coche verte (accepter) sur votre réponse, peut-être pourriez-vous rafraîchir la page et vérifier à nouveau :) @klindalen


Ça devrait le faire :)


@DeveshKumarSingh Question étrange, mais je viens de publier une autre question similaire à celle-ci. Pourriez-vous jeter un œil si vous avez une minute ou 4? stackoverflow .com / questions / 56148986 /…



0
votes

Je vois qu'il y a des doublons dans la liste python lst. Puisque vous avez donné une condition:

for i in lst:
    holder = str(i + " - index: " + str(lst.index(i)))
    if holder not in soutLst:
        soutLst.append(str(i + " - index: " + str(lst.index(i))))
    else :
        print(holder + " already found in  soutLst")

, cela évitera d'ajouter ces éléments dupliqués à l'exception de la première occurrence dans l'autre liste python soutLst. Et aussi je vous recommande d'utiliser / corriger la journalisation comme indiqué ci-dessous:

if not holder in soutLst:
    soutLst.append(str(i + " - index: " + str(lst.index(i))))

Maintenant, cela a encore plus de sens.


0 commentaires