Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.lang.python > #7578

Trovare gli indici degli elementi che corrispondono a un criterio in una lista

From Paolo Ferraresi <fp.box@alice.it>
Newsgroups it.comp.lang.python
Subject Trovare gli indici degli elementi che corrispondono a un criterio in una lista
Date 2015-06-29 22:30 +0200
Organization Aioe.org NNTP Server
Message-ID <mms9sb$gd7$1@speranza.aioe.org> (permalink)

Show all headers | View raw


Ciao Ragazzi,
sto imparando Python e devo dire che mi la sintassi pulita che ha però 
mi domando... so che i cicli for sono piuttosto lenti, quindi, se io ho 
una lista che contiene un gran numero di elementi...
Se uso filter ottengo una lista con gli elementi che soddisfano un certo 
criterio, se uso index ottengo la prima occorrenza, ma se volessi 
ottenere una lista con gli indici degli oggetti che soddisfano un certo 
criterio, come dovrei fare?
Io l'ho fatto così...

def find(f,lst):
     return [i for i, x in enumerate(lst) if f(x)==True]

ad esempio se ho una lista di boolean e cerco gli indici i per cui 
v[i]==True, farei...

lista_indici = find(lambda x: x, v)

Ma la mia domanda sorge spontanea... così come esistono algoritmi 
superveloci perché in puro "C" (es numpy, la mia lista potrebbe essere 
anche un array di numpy) c'è qualche libreria che fa questo o comunque 
il modo che ho fatto è il modo più corretto ed efficiente per Python.
Ragazzi chiedo a voi, dato che io sono alle prime armi con Python.

Ciao e grazie.

Back to it.comp.lang.python | NextNext in thread | Find similar


Thread

Trovare gli indici degli elementi che corrispondono a un criterio in una lista Paolo Ferraresi <fp.box@alice.it> - 2015-06-29 22:30 +0200
  Re: Trovare gli indici degli elementi che corrispondono a un criterio in una lista Claudio_F <clau.fin@tin.it> - 2015-06-29 23:00 +0200
  Re: Trovare gli indici degli elementi che corrispondono a un criterio in una lista Riccardo Lemmi <riccardo@reflab.com> - 2015-06-30 11:48 +0200

csiph-web