python 中的 match-mapping-group 模式是否有函数式编程的解决方案?

Is there a solution for the match-mapping-group pattern in python by Functional programming?

比如我有一个列表[2, 4, 7, 9, 6, 12, 38]。我想先通过是否是奇数来识别每个数字,然后将每个奇数加100,每个偶数加101,最后得到两个列表。 有 3 个步骤: 1. 数字匹配是奇数还是偶数 2. 给每个奇数和偶数加上一个适当的小数 3.分组到两个列表

在python中,可能需要3个最少的函数,但是我们应该如何使用函数式编程来达到目标​​?

步骤的顺序似乎是强制的,并且使函数式编程变得更加困难,因此对于开放顺序,Python 实现如下:

odd = lambda x: x % 2 == 1
even = lambda x: not odd(x)
l = [2, 4, 7 ,9 ,36]
listodd = [i + 100 for i in l if odd(i)]
listeven = [i + 101 for i in l if no odd(i)]

所以每个列表都是用一个表达式创建的,列表推导绝对是有效的函数式编程。表达列表理解的另一种方法是使用 filter 和 map:

listodd = map(filter(l, odd), lambda x: x + 100)
listeven = map(filter(l, even), lambda x: x + 101)

代码仍然是高度冗余的,但至于现在我不知道如何写得更短更干净。