sino simbolos significa relacionales que operadores else ejemplos condicional anidado python list

significa - simbolos en python



Primer índice de la lista de Python mayor que x? (9)

Sé que ya hay muchas respuestas, pero a veces siento que la palabra pythonic se traduce en "una sola línea".

Cuando pienso que una mejor definición está más cerca de esta respuesta :

"Aprovechar las características del lenguaje Python para producir un código que sea claro, conciso y fácil de mantener".

Si bien algunas de las respuestas anteriores son concisas, no las encuentro claras y el programador novato tardaría un tiempo en comprenderlas, por lo que no las hace extremadamente fáciles de mantener para un equipo formado por muchos niveles de habilidad.

l = [0.5, 0.3, 0.9, 0.8] def f(l, x): for i in l: if i >x: break return l.index(i) f(l,.7)

o

l = [0.5, 0.3, 0.9, 0.8] def f(l, x): for i in l: if i >x: return l.index(i) f(l,.7)

Creo que lo anterior es fácil de entender para un novato y aún es lo suficientemente conciso como para que lo acepte cualquier programador de pitones veterano.

Creo que escribir código tonto es positivo.

¿Cuál sería la forma más pitónica de encontrar el primer índice en una lista que es mayor que x?

Por ejemplo, con

list = [0.5, 0.3, 0.9, 0.8]

La función

f(list, 0.7)

volvería

2.


Tuve un problema similar cuando mi lista era muy larga. Las soluciones basadas en la comprensión o el filtro irían a través de toda la lista. itertools.takewhile romperá el bucle una vez que la condición se vuelva falsa la primera vez:

from itertools import takewhile def f(l, b): return len([x for x in takewhile(lambda x: x[1] <= b, enumerate(l))]) l = [0.5, 0.3, 0.9, 0.8] f(l, 0.7)


si la lista está ordenada, bisect_left(alist, value) es más rápido para una lista grande que el next(i for i, x in enumerate(alist) if x >= value) .


Otro:

map(lambda x: x>.7, seq).index(True)


for index, elem in enumerate(elements): if elem > reference: return index raise ValueError("Nothing Found")


filter(lambda x: x>.7, seq)[0]


next(x[0] for x in enumerate(L) if x[1] > 0.7)


>>> alist= [0.5, 0.3, 0.9, 0.8] >>> [ n for n,i in enumerate(alist) if i>0.7 ][0] 2


>>> f=lambda seq, m: [ii for ii in xrange(0, len(seq)) if seq[ii] > m][0] >>> f([.5, .3, .9, .8], 0.7) 2