我有一个元素数组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))
答案 0 :(得分:10)
您可以使用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]
答案 1 :(得分:0)
如果您想使用自己的功能,则可以尝试以下操作:
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