清单中range()内的.count()次出现

时间:2019-01-25 13:37:17

标签: python python-3.x

一个简单的问题,我找不到答案,也许我只是愚蠢的,没有搜索正确的内容,但这是代码。

list = [1,2,2,3,4,4,4,5,6,7,7,8,9,9,9,10,10]
ranges = [range(1, 3), range(3, 6), range(6, 10)]

rangesCount = []

for i in ranges:
     rangesCount.append(list.count(i))


 print(rangesCount)

基本上,我希望它计算在一定范围内出现的数字。所以打印输出应该是[3,5,9]

2 个答案:

答案 0 :(得分:0)

RewriteEngine on Redirect 301 /page/https://www.example.com/page/page.html https://www.example.com/page/page.html 用于计数列表中指定值的出现,而不是检查是否包含在list.count对象中。

一种解决方案是将range与生成器表达式一起使用:

sum

可以使用更高效的算法,例如L = [1,2,2,3,4,4,4,5,6,7,7,8,9,9,9,10,10] ranges = [range(1, 3), range(3, 6), range(6, 10)] rangesCount = [] for rng in ranges: rangesCount.append(sum(x in rng for x in L)) print(rangesCount) # [3, 5, 7] ,以及通过第三方库(例如, bisect [NumPy],np.digize [Pandas]。

答案 1 :(得分:0)

.count方法不能计算范围,只能计算值

您可以使用名为map的好东西轻松构建范围计数器:

l = [1,2,2,3,4,4,4,5,6,7,7,8,9,9,9,10,10]
list(map(l.count, range(2,4)))
>> [2, 1]
sum(map(l.count, range(2,4)))
>> 3

然后将其嵌套在for循环中:

list(sum(map(l.count, x) )for x in (range(1, 3), range(3, 6), range(6, 10)))
>> [3, 5, 7]