一个简单的问题,我找不到答案,也许我只是愚蠢的,没有搜索正确的内容,但这是代码。
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]
答案 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]