【发布时间】:2010-10-19 02:44:47
【问题描述】:
我有一个清单如下:
l = [0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,2,2,2]
我想确定一系列相等项目的长度,即对于给定的列表,我希望输出为:
[(0, 6), (1, 6), (0, 4), (2, 3)]
(或类似格式)。
我考虑过使用defaultdict,但它会计算每个项目的出现次数并将其累积到整个列表中,因为我不能有多个键“0”。
现在,我的解决方案如下所示:
out = []
cnt = 0
last_x = l[0]
for x in l:
if x == last_x:
cnt += 1
else:
out.append((last_x, cnt))
cnt = 1
last_x = x
out.append((last_x, cnt))
print out
我想知道是否有更 Pythonic 的方式来做到这一点。
【问题讨论】: