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
3 Réponses :
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)
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)))
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 /…
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.
Vous pouvez utiliser
enumeratepour obtenir à la fois des index et des éléments lorsque vous parcourez la liste @klindalen