python - 如何计算数组python中连续出现了多少次值?
问题描述
我有一个元素数组x=[9,2,2,2,2,3,4,4,55,55,6,2,2,2,7,0,0]
,我想知道一个值在这个数组中连续显示了多少次,使用 python 语言。预期的结果应该是:a=[1,4,1,2,2,1,3,1,2]
下面的代码显示了 x 中的重复数字
x=[9,2,2,2,2,3,4,4,55,55,6,2,2,2,7,0,0]
def times_so_far(ls):
out = [0]*len(ls)
for i in range(len(ls)):
out[i] = ls[:i].count(ls[i])
return out
print(times_so_far(x))
解决方案
您可以使用itertools.groupby
:
from itertools import groupby
x=[9,2,2,2,2,3,4,4,55,55,6,2,2,2,7,0,0]
out = [len([*group]) for i, group in groupby(x)]
>>> out
[1, 4, 1, 2, 2, 1, 3, 1, 2]
推荐阅读
- database - 存储一组坐标以基于接近度进行快速查找的最佳方法是什么?
- discord.js - 当特定用户发送消息时,Discord 机器人会发送重播
- google-cloud-platform - 有没有办法从控制台批量删除表?
- java - 运行测试时在 Spring MvC 中注入 bean
- fortran - Fortran 的 .f 和 .for 文件有什么区别?
- c# - Thread.Sleep(0) 在 .NET Core 3.1 上无法正常工作
- react-native - React Native:任何导航器都没有处理带有有效负载(blahblah)的操作“NAVIGATE”。你有一个名为“主页”的屏幕吗?
- c++ - 让 Gcc 指定哪些模板占用的时间最长
- python - 从字符串在python中创建一个列表
- android - Flutter 中的 Dialogflow 建议芯片响应?