如何在列表中计算大于给定数字的元素出现次数?

7
假设我有这个列表:
a = [1.1, 2, 3.1, 4, 5, 6, 7.2, 8.5, 9.1]

我想知道有多少元素大于7。结果应该是3。在Python中有一种优雅的方法可以做到这一点吗?我尝试使用count,但它不起作用。

3个回答

19
>>> a = [1.1 , 2 , 3.1 , 4 , 5 , 6 , 7.2 , 8.5 , 9.1]
>>> sum(x > 7 for x in a)
3

这是利用布尔值也是整数的事实。

(如果你因为认为不清晰或不符合Python风格而反对此方法,请阅读此链接


2
不知道 True 值可以相加。 - John Wang
@JohnWang 我更新了我的回答,顺便说一下,TrueFalse并没有什么特别之处,它们只是10 - jamylak

2

更简洁的方法是使用numpy:

sum(np.array(a)>7)

0
写一个函数,返回大于指定数字的元素的数量。
def get_max_count(l, num):
    count = 0

    for x in l:
        if x > num:
            count+=1
    return count

l = [1.1, 2, 3.1, 4, 5, 6, 7.2, 8.5, 9.1]
print get_max_count(l=l, num = 7)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接