Quale sarebbe il modo più elegante ed efficiente per trovare/restituire la prima voce dell'elenco che corrisponde a un determinato criterio?trova la prima sequenza che corrisponde a un criterio
Ad esempio, se ho un elenco di oggetti e vorrei ottenere il primo oggetto di quelli con attributo obj.val==5
. Naturalmente potrei usare la comprensione delle liste, ma ciò dovrebbe comportare O (n) e se n è grande, è uno spreco. Potrei anche usare un ciclo con break
una volta che il criterio è stato rispettato, ma ho pensato che ci potrebbe essere una soluzione più pitone/elegante.
cosa succede se si vuole ottenere l'oggetto e l'indice? –
@CharlieParker, per ottenere sia l'indice che l'elemento, utilizzare enumerate() - next ((idx, obj) per idx, obj in enumerate (objs) if obj.val == 5) –