如何在Python序列中计算重复数字的序列?

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个小序列,都是由0分隔的[1, 1];序列seq3有4个小序列:第一个[1, 1][1, 1, 1][2, 2]和第二个[1, 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]

我想你现在可以开始计算了。 :)

可能是解决这个问题的最佳方案。但是如果“序列”更长,需要更多的内存。 - Tadeck
1
谢谢。我把它放在一行里:len([k for k, g in itertools.groupby(seq1) if k != 0]) - msampaio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接