python

时间:2016-03-28 23:12:30

标签: python algorithm python-2.7 sequence

嗨我想得到给定序列中相同数字的子序列。 子序列应作为列表返回。

例如

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

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

我遇到for循环的问题,因为当我比较列表的两个元素时,例如:

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

我的列表索引超出范围错误。 我知道这并不复杂,但我只是开始编程。

2 个答案:

答案 0 :(得分:1)

当你的循环到达数组中的最后一个元素时,在你的示例3中,你试图获得" next元素" seq[i+1]但没有人,因为3是最后一个。

因此,您可以尝试检查是否存在下一个元素。

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

答案 1 :(得分:0)

你可以在这里使用groupby of itertools

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