7

I have a list of elements (integers) and what I need to do is to quickly check how many elements from this list fall within a specified range. The example is below.

range is from 34 to 566

l = [9,20,413,425]

The result is 2.

I can of course use a simple for loop for the purpose and compare each element with the min and max value (34 < x < 566) and then use a counter if the statement is true, however I think there might be a much easier way to do this, possibly with a nice one-liner.

WlJs
  • 927
  • 1
  • 10
  • 12

3 Answers3

13
>>> l = [9,20,413,425]
>>> sum(34 < x < 566 for x in l)
2
Nolen Royalty
  • 17,717
  • 4
  • 38
  • 48
9

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

gefei
  • 18,124
  • 7
  • 49
  • 65
2

well i am not sure this is nice, but it's one line ;-)

len(set([9,20,413,425]).intersection(range(34,566)))
snies
  • 3,365
  • 1
  • 19
  • 18