2016-03-28 8 views
0

こんにちは私は与えられた配列から同じ数の部分配列を取得したいと思います。 サブシーケンスをリストとして返す必要があります。私は、forループに問題があるPythonで与えられた数列から得られる定数部分列

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

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

例えば

ので、私は、リストなどの二つの要素を比較する場合:

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

私は取得していますが範囲外のエラーをリストします。 私はそれが複雑ではないことを知っていますが、私はちょうどプログラミングを始めています。

+1

'itertoolsのGROUPBYを使用することができます[: - 1]'あなたの問題を解決します –

+0

@SalvadorDaliではなく、それはdoesntの、配列は一つの要素を持っている場合は? seq [i-1]は空のリストを返します。 – levi

+0

@leviと**どのような**同じ数字**のリストから得ることができますか? –

答えて

1

3の例でループが配列の最後の要素に到達すると、 "次の要素" seq[i+1]を取得しようとしていますが、3が最後の要素なので、何もありません。

したがって、次の要素があるかどうかを確認できます。

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

あなたは、配列に私のためにここに

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 
関連する問題