2013-10-09 78 views

回答

4

使用itertools.groupby

>>> import itertools 
>>> [len(list(grp)) for key, grp in itertools.groupby(['a', 'a', 'a', 'b', 'b', 'c'])] 
[3, 2, 1] 
>>> [sum(1 for _ in grp) for key, grp in itertools.groupby(['a', 'a', 'a', 'b', 'b', 'c'])] 
[3, 2, 1] 

使用mapreduce

>>> import operator 
>>> 
>>> def f(result, item): 
...  if result and result[-1][0] == item: 
...   return result[:-1] + [[item, result[-1][1]+1]] 
...  else: 
...   return result + [[item, 1]] 
... 
>>> map(operator.itemgetter(1), reduce(f, ['a', 'a', 'a', 'b', 'b', 'c'], [])) 
[3, 2, 1] 
相關問題