首 页 行业热点 新车 试驾评测 养车用车 车型库

python如何统计list有几个连续的数字

发布网友 发布时间: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 = [(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的

追答越要简单越应该用标准库啊

热心网友 时间: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]   
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')]))))

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com