Je veux pouvoir parcourir une liste Python et imprimer chaque numéro d'index d'occurrences.
Exemple: Lorsque j'essaie ce code, cela ne me donne le premier numéro d'index pour le t em> mais je veux imprimer chaque numéro d'index que le t em> a été utilisé dans. p> p>
4 Réponses :
Oui, vous pouvez le faire avec énumérer code>
Cela fonctionne certainement, mais l'utilisation d'indices est plus verbeuse et légèrement plus lente que le déballage de Tuple, comme les utilisations de la réponse de Tomothy32.
Vous pouvez utiliser une compréhension de liste avec intérieur de la liste de compréhension, énumérer code>:
i code> est l'index actuel et < code> x code> est la valeur à cet index. p> p>
Vous voulez sûrement dire [(i, x) pour i, x en énumérant (a)] code>? Sinon, vous ne comparez que pour
x == 't' code>, pas pour tous les éléments.
@SMCI Désolé, je suis assez confus quant à ce que vous dites. Comment ce que je n'ai pas trouvé tous les indices? Quelle est la sortie supposée être?
Ce que vous avez seulement trouvé les occurrences de l'article 'T'. Pas de tous les articles. La question indiquait "examiner à travers une liste et imprimer chaque occurrence" numéro d'index ".
@SMCI La façon dont j'interprète le titre est de rechercher toutes les occurrences d'un seul élément. Rien dans la question suggère "tous les articles". Bien sûr, si vous pouvez donner une certaine élaboration de savoir où exactement OP spécifié "tous les articles" plutôt qu'un seul élément, qui serait apprécié.
Il n'y a pas besoin de sarcasme laborieux. Le titre est clairement en conflit avec la première ligne qui dit "look à travers la liste et imprimer chaque occurrence ' b> numéro d'index" i>, comme je l'ai dit. Étant donné le choix entre l'interpréter de manière à ne pas donner une ressource très réutilisable (par exemple pour l'article 'T'), nous devrions choisir la manière la plus générale ("Tous les articles").
>>> get_indices(a, "t") [0, 3]
C'est ce que énumérable () code> est pour. Pas besoin de boucles. Liste des compréhensions tout le chemin. Nettoyant, plus court, plus pythonique.
Mais une bonne solution de travail néanmoins. Je préfère personnellement la méthode de boucle.
@PikachuthepurpleWizard: Pourquoi? C'est une solution non pythonique clunky, obscurcie et non pythonique; moins efficace et plus lent. C'est le genre de chose qu'un codeur Java génère. Cela ne montre aucune compréhension de l'idiome Python. pour i in gamme (len (liste)) code> est toujours une odeur de code pour
énumérer (liste) code>
@SMCI Eh bien, je suis un codeur Java. Je suis habitué à beaucoup de boucles. Mais mon point est, même s'il n'utilise pas une méthode d'utilité intégrée, cela fonctionne toujours parfaitement.
Veuillez ne pas ombre des noms intégrés tels que Liste code>. Il ne fera rien de mal dans votre fonction
get_indices code>, mais en général, cela peut conduire à des erreurs avec des messages d'erreur mystérieux si le code suivant tente d'appeler
Liste code>. Et nous ne voulons pas que de nouveaux codeurs lisent alors des réponses ramassant de telles mauvaises habitudes.
avec Sortie: fort> p> avec boucle pour tous les éléments, p> énumérer code> à l'intérieur
{'s': [2], 'e': [1], 't': [0, 3]}
Votre 1ère solution est bonne. Votre 2e solution doit être écrite sans la double boucle inefficace et ne doit pas calculer résultat ['T'] code> deux fois.
vous devriez faire boucle dans la liste vous-même et enregistrer les indices
Connaissez-vous sur
énumérer (a) code> et compréhensions de liste?
J'ai entendu parler de
énumérer () code>, mais je ne savais pas comment l'utiliser de cette manière.
Coderdude: Bien sûr. Chaque fois que vous vous trouvez écrivez
pour i in gamme (len (quelque chose)) code> C'est toujours une odeur de code pour
énumérer (quelque chose) code>. Et comme cela évite avoir besoin d'une boucle, il suggère une compréhension de la liste (éventuellement avec une condition).
Ne voulez-vous que trouver des occurrences de l'élément 'T' (comme votre code implique) ou tous les éléments de la liste (comme votre titre implique)? Ce dernier est plus généralisé pour le reste d'entre nous. Pouvez-vous réparer votre titre ou votre code?