3

我想计算在给定序列中出现了多少次相邻重复数不同于零的小序列。设三个序列:

seq1 = [1, 1, 2, 2, 3, 3, 3]
seq2 = [1, 1, 0, 1, 1]
seq3 = [1, 1, 0, 0, 1, 1, 1, 2, 2, 0, 1, 1, 0, 0, 0]

该序列seq1有 3 个小序列:[1, 1][2, 2][3, 3, 3]; 该序列seq2有2个小序列,均以[1, 1] 0分隔;和序列seq3, 有 4 个小序列:第一个[1, 1], [1, 1, 1], [2, 2], 和第二个[1, 1]

4

1 回答 1

5

使用itertools.groupby

>>> from itertools import groupby
for k,g in groupby(seq1):
    if k != 0:
        print list(g)
...         
[1, 1]
[2, 2]
[3, 3, 3]

for k,g in groupby(seq2):
    if k != 0:
        print list(g)
...         
[1, 1]
[1, 1]

我想你现在可以数数了。:)

于 2013-07-11T15:28:28.793 回答