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
  • 977
  • 1
  • 10
  • 12

3 Answers3

14
>>> l = [9,20,413,425]
>>> sum(34 < x < 566 for x in l)
2
Nolen Royalty
  • 18,415
  • 4
  • 40
  • 50
9

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

gefei
  • 18,922
  • 9
  • 50
  • 67
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,461
  • 1
  • 22
  • 19