您知道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步骤。
我知道如何用经典的迭代方式来做这件事,跟踪索引等等。在大多数情况下,我已经为大多数迭代模式找到了一个很好的函数替代品。有没有一个单一操作的名称,或者可以组合成一组简单的操作来创建这种效果?
发布于 2011-12-26 12:53:38
我认为flatmap的对立面是groupby。
$ python3
>>> from itertools import groupby
>>> groupby(['A1', 'A2', 'B1', 'B2', 'B3', 'C1'], lambda x: x[0])https://stackoverflow.com/questions/8632745
复制相似问题