2016-03-28 7 views
0

Hallo Ich möchte eine Teilfolge der gleichen Zahlen aus gegebener Reihenfolge erhalten. Die Subsequenzen sollten als Liste zurückgegeben werden.Konstante Unterfolge von gegebener Zahlenfolge in Python

Zum Beispiel

input = [4, 5, 67, 2, 4, 4, 4, 6, 2, 2, 3] 

und

output = [ [4, 4, 4], [2, 2] ]. 

ich ein Problem mit for-Schleife haben, denn wenn ich vergleiche zwei Elemente der Liste, zB:

for i in seq: 
     if i == seq[i+1] 

Ich erhalte eine Listenindex außerhalb des Bereichsfehler. Ich weiß, es ist nicht kompliziert, aber ich fange gerade mit dem Programmieren an.

+1

'für i in f [: - 1]' Ihr Problem –

+0

@SalvadorDali lösen nicht, es tut, wenn Array ein Element? seq [i-1] gibt eine leere Liste zurück. – levi

+0

@levi und welche Art der ** gleichen Nummern ** kannst du aus einer Liste von ** nur einer Nummer ** bekommen? –

Antwort

1

Wenn Ihre Schleife das letzte Element im Array erreicht, in Ihrem Beispiel 3, versuchen Sie, das "nächste Element" seq[i+1] zu bekommen, aber es gibt niemanden, weil 3 der letzte ist.

So können Sie versuchen, zu überprüfen, ob es ein nächstes Element gibt.

for i in seq: 
     next = seq[i+1] if i < len(seq) else None 
     if next and i == next 
0

können Sie groupby von itertools verwenden hier

import itertools 

input = [4, 5, 67, 2, 4, 4, 4, 6, 2, 2, 3] 
list_of_sequence_list = [list(group) for key, group in itertools.groupby(input)] 
subsequence_list = [sequence_list for sequence_list in list_of_sequence_list if len(sequence_list)>1] 

print subsequence_list 
Verwandte Themen