2012-05-16 2 views
5

Ho una lista di elementi (interi) e quello che devo fare è controllare rapidamente quanti elementi di questa lista rientrano in un intervallo specificato. L'esempio è sotto.Controlla quanti elementi di una lista rientrano in un intervallo specificato (Python)

intervallo va da 34 a 566

l = [9,20,413,425]

Il risultato è 2.

che naturalmente può utilizzare un semplice ciclo per lo scopo e confrontare ogni elemento con il valore minimo e massimo (34 < x < 566) e quindi utilizzare un contatore se l'affermazione è vera, tuttavia penso che ci potrebbe essere un modo molto più semplice per farlo, possibilmente con un bel one-liner.

risposta

8

len([x for x in l if x > 34 and x < 566])

2

bene io non sono sicuro che questo è bello, ma è una linea ;-)

len(set([9,20,413,425]).intersection(range(34,566))) 
12
>>> l = [9,20,413,425] 
>>> sum(34 < x < 566 for x in l) 
2 
+1

Intelligente, ma non intuitiva. –