2017-06-15 4 views
-1

Eine Folge von Integer-Zahlen, die mit der Zahl 0 enden. Bestimmen Sie die Länge des breitesten Fragments, in dem alle Elemente gleich sind. , d. H. 4,4,4,4,31,31,5,5,5,5,5,5 sollte zurückgeben 6Python 3: Die maximale Anzahl aufeinanderfolgender gleicher Elemente

Dies ist eine Aufgabe, die ich in der Schule gegeben wurde und habe keine Ahnung, wie zu vervollständigen. Bitte helfen ...

Hier ist der Code Ich habe bisher:

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

Mögliche Duplikat [finden maximale Länge aufeinanderfolgende wiederholte Zahlen in einer Liste (Python)] (https://stackoverflow.com/questions/36441521/find-maximum-length-of-secutive-repeated-numbers-in-a-list-python) –

+1

Siehe [** 'itertools.groupby' **] (https://docs.python.org/2/library/itertools.html#itertools.gro upby), zweites Beispiel: 'max ((list (g) für k, g in groupby (seq)), key = len)' –

Antwort

0

Wie here angegeben Sie itertools.groupby verwenden können, dies zu erreichen:

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 
Verwandte Themen