python - 计算从 x 到 x 个周期的连续出现次数
问题描述
我有一个包含 20 个数字的二进制列表:a=[1,1,1,1,0,1,1,0,1,1,1,0,1,1,1,1,1,0,0, 0,1,1,1,0,1,1,0,1,1,0],我的目标是计算每 5 个元素上连续出现 1 的最大次数并将其存储在列表中,在这种情况下输出将是:out= [4,5,3],因为在前 10 个元素上,我们最多有 4 个连续的 1,在后 10 个元素上,我们有 5 个连续的 1,最后一个有 3 个。
我目前的功能如下:
`def count_ones(lista):
counts=[]
longest=0
current=0
for n in range(0,len(lista),10):
for i in range(n,n+10):
if i>= len(lista): break
if lista[i]==1:
current+=1
else:
longest= max(longest , current)
current=0
counts.append(longest)
return (counts)
`
无法正常工作
解决方案
你可以使用itertools groupby
:
如果您只想计算 1:
from itertools import groupby
n = 10 # specify the sublist size.
result = [max(len(list(k)) for g, k in groupby(item) if g == 1)
for item in (a[i:i + n] for i in range(0, len(a), n))]
下面的代码将查找子列表中任何元素连续出现的最大大小。
from itertools import groupby
n = 10 # specify the sublist size.
result = [max(len(list(k)) for _, k in groupby(item))
for item in (a[i:i + n] for i in range(0, len(a), n))]
print(result) # [4, 5, 3]
推荐阅读
- c# - 如何为我的数据库创建到我的“主文件夹”的相对路径,以便我可以在另一台计算机上运行我的项目?
- powershell - Powershell 中的类实例问题
- python - Pandas DatetimeIndex + 季节性分解 = 缺失频率
- sql - 引用约束被触发,但无法从表中选择会触发它的行
- c# - 将 [S]CSS 移动到非角度应用程序时,我如何处理 /deep/ (和 :host )
- php - PHP用数组定义的where语句列名查询表
- javascript - 如何将数字输入设置为 javascript 变量?
- vba - 多次随机播放现有列,且任何行均不重复
- ubuntu-18.04 - 如何在 freeradius 3.0 上为 daloradius 启用访问期
- postgresql - 在 Heroku 仪表板中意外删除了生产 Postgres DB