python如何统计list有几个连续的数字
比如mylist=[1,1,0,1,1,1,0,0,0,0,1,1,1,1,0,1,0,11,0]怎么写才可以知道1最多连续出现4次。0最多出现4次呢?...
比如mylist = [1,1,0,1,1,1,0,0,0,0,1,1,1,1,0,1,0,11,0]
怎么写才可以知道1最多连续出现4次。 0最多出现4次呢? 展开
怎么写才可以知道1最多连续出现4次。 0最多出现4次呢? 展开
3个回答
展开全部
mylist = [1,1,0,1,1,1,0,0,0,0,1,1,1,1,0,1,0,11,0]
result = {}
tmp = None
for i in mylist:
if not result.has_key(i):
#新出现的值为1
result[i] = {'tmpcount':1,'maxcount':1}
else:
if i == tmp :
#同上一次相同,tmpcount数字加一,同时更新maxcount
result[tmp]['tmpcount'] = result[tmp]['tmpcount'] + 1
if result[tmp]['maxcount'] < result[tmp]['tmpcount']:
result[tmp]['maxcount'] = result[tmp]['tmpcount']
else:
#如果不同,上次数字的tmpcount归零,这次的数字的tmpcount归一
result[i]['tmpcount'] = 1
result[tmp]['tmpcount'] = 0
tmp = i
for j,k in result.items():
print '数字' + str(j) + '出现的最大连续次数为' + str(k['maxcount'])
试试这个,有点麻烦但应该可以解决这个问题
展开全部
先使用itertools.groupby,对每个连续的数字进行分组
import itertools
num_times = [(k, len(list(v))) for k, v in itertools.groupby(mylist)]
这样得到的num_times是每个数字连续出现的次数
num_times = [
(1, 2), (0, 1), (1, 3),
(0, 4), (1, 4), (0, 1),
(1, 1), (0, 1), (11, 1),
(0, 1)]
然后对每个数字,统计出现的最大次数,这一步比较简单就自己想想吧
追问
有简单的方法吗 不要import的
追答
越要简单越应该用标准库啊
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
mylist = [1,1,0,1,1,1,0,0,0,0,1,1,1,1,0,1,0,1,1,0]
mystr=''.join(map(str,mylist)) #先转化为字符串
for i in set(mystr):
print(i,max(list(map(lambda x:len(x),[j for j in mystr.split(i)])))) #使用map跟lambda函数对分割后的列表各元素求长度
缺陷是只能处理列表中只有两种数字的
后来改了一下 先可以把列表变为只有0跟1的数据 然后再按上面的思路来
mylist = [1,1,0,1,1,2,2,1,0,0,0,0,1,1,2,2,2,1,1,0,1,0,1,2,2,1,0]
for j in set(mylist):
list1=[1 if i==j else 0 for i in mylist ]
mystr=''.join(map(str,list1))
print(j,max(list(map(lambda x:len(x),[j for j in mystr.split('0')]))))
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |