2017-04-15 22 views
3

我有一個數組ar = [2,2,2,1,1,2,2,3,3,3,3]。 對於該陣列中,我想找到的連續相同數字的像的長度:如何在python中找到運行長度編碼

values: 2, 1, 2, 3 
lengths: 3, 2, 2, 4 

R,這是通過使用rle()函數獲得。 python中是否有任何現有的函數提供所需的輸出?

+1

您可以使用計數器從集合做到這一點。 – Rahul

+3

不完全是這樣,但您可以使用'itertools.groupby' –

回答

9

您可以groupby

In [60]: from itertools import groupby 
In [61]: ar = [2,2,2,1,1,2,2,3,3,3,3] 
In [62]: print [(k, sum(1 for i in g)) for k,g in groupby(ar)] 
[(2, 3), (1, 2), (2, 2), (3, 4)]