2010-07-19 12 views
11

Dada una lista de números sin clasificar, quiero encontrar el número más pequeño que N (si corresponde).python - operaciones de lista

En C#, me gustaría hacer algo como esto (cheques omitidas):

var x = list.Where(i => i > N).Min(); 

¿Qué es un camino corto y fácil de leer para hacer esto en Python?

+1

¿Qué significa * you * mean by "READABLE"? –

+0

@SLott "leer · a · ble/rēdəbəl /: (2) Fácil o agradable de leer." ¿Qué quieres decir con "¿Qué quieres decir con legible?" ? –

Respuesta

19
>>> l = [4, 5, 12, 0, 3, 7] 
>>> min(x for x in l if x > 5) 
7 
+0

ell minúsculo no es una buena opción para un nombre de variable –

+0

@Marius: ¿realmente me has votado negativamente por esto? – SilentGhost

2
x = min(i for i in mylist if i > N) 
4
min(x for x in mylist if x > N) 
3

Otras personas han dado respuestas lista de comprensión. Como alternativa, filter es útil para 'filtrar' elementos de una lista.

min(filter(lambda t: t > N, mylist)) 
+1

usando el filtro es un poco más lento que usando las expresiones del generador –

+0

+1. He hecho esta pregunta en parte para mejorar mis habilidades de Python, por lo que esta respuesta sirve para mi propósito bastante bien. –