嗨我想得到给定序列中相同数字的子序列。 子序列应作为列表返回。
例如
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]
我的列表索引超出范围错误。 我知道这并不复杂,但我只是开始编程。
答案 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