0
나는 아래의 규칙에 파이썬에서 목록을 압축 할 :지도 또는 축소 기능을 사용하여 파이썬에서 목록을 압축하는 방법은 무엇입니까?
['a', 'a', 'a', 'b', 'b', 'c'] -> [3, 2, 1]
나는이 내장 된지도/파이썬에서 기능을 줄이고 사용하려면, 어떻게 만들어?
감사합니다.
나는 아래의 규칙에 파이썬에서 목록을 압축 할 :지도 또는 축소 기능을 사용하여 파이썬에서 목록을 압축하는 방법은 무엇입니까?
['a', 'a', 'a', 'b', 'b', 'c'] -> [3, 2, 1]
나는이 내장 된지도/파이썬에서 기능을 줄이고 사용하려면, 어떻게 만들어?
감사합니다.
사용 itertools.groupby
:
>>> 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]
:
>>> 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]
는 map
, reduce
사용