gpt4 book ai didi

python - 如何使用 map 或 reduce 函数在 Python 中压缩列表?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:38:43 25 4
gpt4 key购买 nike

我想按照以下规则在 Python 中压缩一个列表:

['a', 'a', 'a', 'b', 'b', 'c']  ->  [3, 2, 1]

我想使用Python内置的map/reduce函数,如何实现?

谢谢!

最佳答案

使用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]

关于python - 如何使用 map 或 reduce 函数在 Python 中压缩列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19265922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com