44 votes

Comment obtenir une liste d’indices d’éléments non nuls dans une liste ?

J’ai une liste qui ne contiendra toujours que des uns et des zéros. J’ai besoin d’obtenir une liste des indices non nuls de la liste :

Quelle serait la manière « pythonique » d’y parvenir ?

78voto

Ignacio Vazquez-Abrams Points 312628
<pre><code></code></pre>

36voto

Brian Larsen Points 619

Pas vraiment une « nouvelle » réponse , mais numpy a cela intégré aussi.

9voto

gnibbler Points 103484

Depuis que THC4k a mentionné compress (disponible en python2.7+)

6voto

Lexa Points 91

Je voulais juste ajouter une explication pour la sortie « drôle » de l’asnwer précédent. Le résultat est un tuple qui contient des vecteurs d’index pour chaque dimension de la matrice. Dans ce cas, l’utilisateur traite ce qui est considéré comme un vecteur en numpy, de sorte que la sortie est tuple avec un élément.

2voto

asrvnon Points 21

Comparaison temporelle des deux réponses w.r.t longueur de la liste

Avec une longueur de liste de 100000, en modifiant le nombre de ceux dans la liste

Le nombre de ceux-ci n’affecte que la première option. np.nonzero() est meilleur avec une grande quantité d’éléments non nuls. Si la longueur est inférieure à 10000, la première option est plus rapide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X