2017-06-15 140 views
-1

给定一个以数字0结尾的整数序列。确定所有元素彼此相等的最宽片段的长度。 即4,4,4,4,31,31,5,5,5,5,5,5应该返回6Python 3:连续相等元素的最大数目

这是我在学校给出的任务,不知道如何完成。请帮助...

这里是我的代码至今:

seq = [] 
distance = [] 
x = int(input()) 
while x != 0: 
    seq.append(x) 
    x = int(input()) 

n = str(seq) 

for num in seq: 
    distance.append(len(seq[''.join(n).find(str(num))-1:''.join(n).rfind(str(num))+1])) 

print(max(distance)) 
+8

可能的复制[找到的最大长度连续重复的数字在列表(python)](https://stackoverflow.com/questions/36441521/find-maximum-length-of-consecutive-repeated-numbers-in-a-list-python) –

+1

请参阅[** 'itertools.groupby' **](https://docs.python.org/2/library/itertools.html#itertools.gro upby),第二个例子:'max((list(g)for k,group by(seq)中的g),key = len)' –

回答

0

如前所述here你可以使用itertools.groupby来实现这样的:

import itertools 
a = [4,4,4,4,31,31,5,5,5,5,5,5] 
z = [(x[0], len(list(x[1]))) for x in itertools.groupby(a)] 
print max(z, key=lambda x:x[1])[1] #6