发布网友 发布时间:2022-04-26 17:29
共3个回答
热心网友 时间:2022-04-18 14:44
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'])
试试这个,有点麻烦但应该可以解决这个问题
热心网友 时间:2022-04-18 16:02
先使用itertools.groupby,对每个连续的数字进行分组
import itertools这样得到的num_times是每个数字连续出现的次数
num_times = [然后对每个数字,统计出现的最大次数,这一步比较简单就自己想想吧
追问有简单的方法吗 不要import的追答越要简单越应该用标准库啊
热心网友 时间:2022-04-18 17:36
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]