Python count if greater than

I have a list of numbers and I want to get the number of times a number appears in a list that meets a certain criteria. I can use a list comprehension (or a list comprehension in a function) but I am wondering if someone has a shorter way.

# list of numbers
j=[4,5,6,7,1,3,7,5]
#list comprehension of values of j > 5
x = [i for i in j if i>5]
#value of x
len(x)

#or function version
def length_of_list(list_of_numbers, number):
     x = [i for i in list_of_numbers if j > number]
     return len(x)
length_of_list(j, 5)

is there an even more condensed version?

asked May 10, 2012 at 23:01

You could do something like this:

>>> j = [4, 5, 6, 7, 1, 3, 7, 5]
>>> sum(i > 5 for i in j)
3

It might initially seem strange to add True to True this way, but I don't think it's unpythonic; after all, bool is a subclass of int in all versions since 2.3:

>>> issubclass(bool, int)
True

answered May 10, 2012 at 23:03

Python count if greater than

senderlesenderle

139k35 gold badges206 silver badges231 bronze badges

5

You can create a smaller intermediate result like this:

>>> j = [4, 5, 6, 7, 1, 3, 7, 5]
>>> len([1 for i in j if i > 5])
3

answered May 10, 2012 at 23:08

Greg HewgillGreg Hewgill

906k177 gold badges1131 silver badges1267 bronze badges

1

if you are otherwise using numpy, you can save a few strokes, but i dont think it gets much faster/compact than senderle's answer.

import numpy as np
j = np.array(j)
sum(j > i)

answered May 10, 2012 at 23:08

ludaavicsludaavics

6381 gold badge5 silver badges14 bronze badges

A (somewhat) different way:

reduce(lambda acc, x: acc + (1 if x > 5 else 0), j, 0)

answered May 10, 2012 at 23:15

If you are using NumPy (as in ludaavic's answer), for large arrays you'll probably want to use NumPy's sum function rather than Python's builtin sum for a significant speedup -- e.g., a >1000x speedup for 10 million element arrays on my laptop:

>>> import numpy as np
>>> ten_million = 10 * 1000 * 1000
>>> x, y = (np.random.randn(ten_million) for _ in range(2))
>>> %timeit sum(x > y)  # time Python builtin sum function
1 loops, best of 3: 24.3 s per loop
>>> %timeit (x > y).sum()  # wow, that was really slow! time NumPy sum method
10 loops, best of 3: 18.7 ms per loop
>>> %timeit np.sum(x > y)  # time NumPy sum function
10 loops, best of 3: 18.8 ms per loop

(above uses IPython's %timeit "magic" for timing)

answered Dec 7, 2015 at 11:18

Different way of counting by using bisect module:

>>> from bisect import bisect
>>> j = [4, 5, 6, 7, 1, 3, 7, 5]
>>> j.sort()
>>> b = 5
>>> index = bisect(j,b) #Find that index value
>>> print len(j)-index
3

answered Nov 8, 2016 at 8:08

Python count if greater than

ShashankShashank

1,0511 gold badge21 silver badges34 bronze badges

I'll add a map and filter version because why not.

sum(map(lambda x:x>5, j))
sum(1 for _ in filter(lambda x:x>5, j))

answered Sep 10, 2019 at 16:42

You can do like this using function:

l = [34,56,78,2,3,5,6,8,45,6]  
print ("The list : " + str(l))   
def count_greater30(l):  
    count = 0  
    for i in l:  
        if i > 30:  
            count = count + 1.  
    return count
print("Count greater than 30 is : " + str(count)).  
count_greater30(l)

Joseph Budin

1,1761 gold badge11 silver badges24 bronze badges

answered Oct 1, 2020 at 17:06

Not the answer you're looking for? Browse other questions tagged python list or ask your own question.

How do you find the number greater than a value in a list Python?

Method 5 : Using bisect() + sort() The combination of sort() and bisect() , can actually perform the task of binary search, and hence getting the index and subtracting the size of list can actually help us get elements that are greater than particular element in the list.

How do you count by condition in Python?

Short answer: you can count the number of elements x that match a certain condition(x) by using the one-liner expression sum(condition(x) for x in lst) . This creates a generator expression that returns True for each element that satisfies the condition and False otherwise.

How do you count values greater than the group in pandas?

x > x. mean() gives True if the element is larger than the mean and 0 otherwise, sum then counts the number of Trues.

How do you count the number of times a word appears in a list in Python?

Using the count() Function The "standard" way (no external libraries) to get the count of word occurrences in a list is by using the list object's count() function. The count() method is a built-in function that takes an element as its only argument and returns the number of times that element appears in the list.