lambda分组求和
时间: 2023-07-01 14:20:48 浏览: 42
可以使用Python的内置函数`reduce`和`lambda`实现分组求和。假设我们有一个列表`nums`,需要按照其中元素的奇偶性进行分组求和,可以使用如下代码:
```python
from functools import reduce
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = reduce(lambda acc, num: (acc[0] + num, acc[1]) if num % 2 == 0 else (acc[0], acc[1] + num), nums, (0, 0))
print(result) # 输出 (30, 25),即偶数之和为30,奇数之和为25
```
在上述代码中,我们使用`reduce`函数对`nums`列表中的元素进行迭代,初始值为`(0, 0)`,表示偶数和和奇数和的初始值均为0。`lambda`函数接受两个参数:`acc`表示当前的累加器,`num`表示当前迭代到的元素。如果当前元素是偶数,则将元素的值加到偶数和上,否则将元素的值加到奇数和上。最终返回的结果是一个二元组,第一个元素表示偶数和,第二个元素表示奇数和。
相关问题
lambda表达式 列表分组求和
好的,关于 lambda 表达式和列表分组求和的问题,可以给您进行解答。lambda 表达式是一种匿名函数,在 Python 中常用于函数式编程,可以简化代码,提高代码可读性和效率。列表分组求和,则是将一个列表分组后对每组元素进行求和,可以使用 Python 的内置函数和 lambda 表达式来实现。如果您需要更详细的解答,我可以给您提供相关的代码示例和说明。
lambda表达式分组并求和
假设有一个列表 `lst`,可以使用 lambda 表达式分组并求和:
```python
from itertools import groupby
# 假设有一个列表
lst = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
# 使用 lambda 表达式分组并求和
result = [(key, sum(group)) for key, group in groupby(lst)]
print(result)
# 输出 [(1, 1), (2, 4), (3, 9), (4, 16)]
```
上面的代码中,使用了 `groupby` 函数对列表进行分组,然后使用 lambda 表达式计算每个分组的和。其中,`key` 是每个分组的键,`group` 是每个分组的元素列表。最后,将每个分组的键和和打包成一个元组,加入到一个列表中。