正在查找列表中的项目的连续计数?

2024-04-25 19:53:26 发布

您现在位置:Python中文网/ 问答频道 /正文

给出一个列表:

>>> l = ['x', 'x', 'y', 'y', 'x']

我可以使用collections.Counter获得列表的计数:

>>> from collections import Counter
>>> Counter(l)
Counter({'x': 3, 'y': 2})

如何计算连续项而不是列表中元素的全局计数

>>> l = ['x', 'x', 'y', 'y', 'x']
>>> ContiguousCounter(l)
[('x',2), ('y',2), ('x', 1)]

>>> l = ['x', 'x', 'y', 'y', 'x', 'x', 'x', 'y']
>>> ContiguousCounter(l)
[('x',2), ('y',2), ('x', 3), ('y', 1)]

Tags: fromimport元素列表counter全局collections计数
1条回答
网友
1楼 · 发布于 2024-04-25 19:53:26

您可以使用内置的^{}函数:

In [3]: from itertools import groupby

In [4]: l = ['x', 'x', 'y', 'y', 'x']

In [5]: list(groupby(l))
Out[5]: 
[('x', <itertools._grouper at 0x7fd94716f1d0>),
 ('y', <itertools._grouper at 0x7fd94716f208>),
 ('x', <itertools._grouper at 0x7fd94716f240>)]

In [6]: [(x, len(list(g))) for x, g in groupby(l)]
Out[6]: [('x', 2), ('y', 2), ('x', 1)]

相关问题 更多 >