Path: csiph.com!aioe.org!.POSTED!not-for-mail From: Paolo Ferraresi Newsgroups: it.comp.lang.python Subject: Trovare gli indici degli elementi che corrispondono a un criterio in una lista Date: Mon, 29 Jun 2015 22:30:06 +0200 Organization: Aioe.org NNTP Server Lines: 25 Message-ID: NNTP-Posting-Host: jTfhnl2JY37MPaYKfKwmMA.user.speranza.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15; format=flowed Content-Transfer-Encoding: 8bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 X-Notice: Filtered by postfilter v. 0.8.2 Xref: aioe.org it.comp.lang.python:7578 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.