Как посчитать, сколько раз значения непрерывно появлялись в массиве python? - PullRequest
0 голосов
/ 30 октября 2018

У меня есть массив элементов x=[9,2,2,2,2,3,4,4,55,55,6,2,2,2,7,0,0], я хотел бы знать, сколько раз значение непрерывно показывалось в этом массиве, используя язык Python. Ожидаемые результаты должны быть: a=[1,4,1,2,2,1,3,1,2]

В приведенном ниже коде показано дублированное число в x

x=[9,2,2,2,2,3,4,4,55,55,6,2,2,2,7,0,0]
def times_so_far(ls):
    out = [0]*len(ls)
    for i in range(len(ls)):
        out[i] = ls[:i].count(ls[i]) 
    return out
print(times_so_far(x))

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Если вы предпочитаете использовать свою собственную функцию, вы можете попробовать что-то вроде следующего:

def count_sequential(ls):
    counts = []
    i = 1
    last_val = ls[0]
    for j in ls[1:]:
        if j != last_val:
            counts.append(i)
            last_val = j
            i = 1
        else:
            i += 1
    counts.append(i)
    return counts
0 голосов
/ 30 октября 2018

Вы можете использовать itertools.groupby:

from itertools import groupby
x=[9,2,2,2,2,3,4,4,55,55,6,2,2,2,7,0,0]
out = [len([*group]) for i, group in groupby(x)]
>>> out
[1, 4, 1, 2, 2, 1, 3, 1, 2]
...