你知道flatmap如何获取一系列项目并将每个项目转换为一个新的子序列,聚合所有子序列:
[A, B, C] -> [A1, A2, B1, B2, B3, C1]
是否有相反的变换名称?类似的东西:
[A1, A2, B1, B2, B3, C1] -> [A, B, C]
让我思考这个问题的具体例子就是对数学表达式进行评估:
1 * 2 + 3 * 4 + 5 + 6 * 7 * 8
-> 2 + 12 + 5 + 6 + 336
-> 361
单独地,6 * 7 * 8
的评估看起来像是经典的reduce
步骤,而在决定需要减少哪些块时需要重复takeWhile
步骤。
我知道如何以经典的迭代方式做到这一点,跟踪索引和所有这些。对于大多数情况,我发现大多数迭代模式都有一个很好的功能替代品。是否存在执行此操作的单个操作的名称,或者可以组合以创建此效果的一组简单操作?
答案 0 :(得分:9)
我认为与flatmap
相反的是groupby
。
$ python3
>>> from itertools import groupby
>>> groupby(['A1', 'A2', 'B1', 'B2', 'B3', 'C1'], lambda x: x[0])