2017-06-15 223 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 
相關問題