Si consideri il seguente codice:Si può usare i derivati della comprensione delle liste nei suoi metodi?
a = [... for i in input]
i = a.index(f(a))
Mi chiedo se potrei essere in grado di fare un one-liner. Prova ovvia è:
i = [... for i in input].index(f([... for i in input]))
Ma questa soluzione richiede che venga generata una lista due volte. non così ovvia prova è:
i = [ a.index(f(a)) for a in [[... for i in input],] ]
che fa il trucco, ma rende il codice davvero strano.
Questo mi porta all'idea che, probabilmente, non v'è possibilità di utilizzare in qualche modo la lista, generato dalla lista di comprensione, nella sua chiamata di metodo. Qualcosa come (non funziona, ovviamente):
i = [... for i in input].index(f(_))
# or
i = [... for i in input].index(f(self))
Può essere fatto?
Perché vuoi eliminare la leggibilità? :) –
Cosa fa f()? Vuoi semplicemente ottenere l'indice di un determinato elemento della lista? – ODiogoSilva
Puoi creare un lambda e chiamarlo immediatamente con la tua comprensione: 'i = (lambda x: x.index (f (x)) ([... per i in input])' Ma questa è un'eresia. 'Nome un input iterabile, che maschera la funzione di input incorporata – Shashank