python 实现分组求和
时间: 2023-09-05 15:05:14 浏览: 109
### 回答1:
可以用 Python 的内置函数 `groupby` 和 `sum` 来实现分组求和。
假设有一个列表 `lst`,其中包含了需要分组求和的元素,可以按照某个条件对其进行分组,例如按照元素的奇偶性进行分组。代码如下:
```python
from itertools import groupby
lst = [1, 2, 3, 4, 5, 6]
groups = groupby(lst, lambda x: x % 2 == 0)
result = [(label, sum(group)) for label, group in groups]
print(result)
```
输出结果为:
```
[(False, 4), (True, 6)]
```
其中 `groupby(lst, lambda x: x % 2 == 0)` 表示按照元素的奇偶性进行分组,返回的是一个迭代器,其中每个元素是一个元组,第一个元素是分组的标签,即 `True` 或 `False`,第二个元素是分组后的元素,是一个迭代器。然后使用列表推导式将结果存储到一个列表中,其中每个元素是一个元组,第一个元素是分组的标签,第二个元素是分组后的元素的和。
### 回答2:
Python实现分组求和可以使用字典来存储分组的结果。以下是一种简单的实现方法:
```python
def group_sum(numbers, groups):
group_sum_dict = {}
for num, group in zip(numbers, groups):
if group not in group_sum_dict:
group_sum_dict[group] = 0
group_sum_dict[group] += num
return group_sum_dict
numbers = [1, 2, 3, 4, 5, 6]
groups = ['A', 'B', 'A', 'B', 'C', 'C']
result = group_sum(numbers, groups)
print(result)
```
这个函数`group_sum`接受两个参数:`numbers`代表数字列表,`groups`代表对应的分组列表。它使用`zip`函数将两个列表中的元素一一对应,并通过循环遍历分组求和。首先检查当前分组是否已经存在于`group_sum_dict`字典中,若不存在则初始化为0,然后将数字加到对应分组的总和中。最后返回求和结果的字典。
以上代码中的输入为`numbers = [1, 2, 3, 4, 5, 6]`和`groups = ['A', 'B', 'A', 'B', 'C', 'C']`,输出将会是一个字典`{'A': 4, 'B': 6, 'C': 11}`,代表三个分组的求和结果。
### 回答3:
Python可以通过字典、列表、循环等方式实现分组求和。
一种常见的方法是利用字典实现分组求和。我们可以遍历给定的列表或数组,将元素作为字典的键,然后根据元素的值更新字典中的对应键的值。最后,我们可以输出字典中的键值对来得到分组求和的结果。
另一种方法是利用列表实现分组求和。我们可以创建一个与给定列表同样长度的列表,然后遍历给定列表,将元素所属的分组对应位置的值相加,并更新列表中的对应位置的值。最后,我们可以输出列表中的值来得到分组求和的结果。
下面是一个利用字典实现分组求和的示例代码:
```python
def group_sum(nums):
sums = {}
for num in nums:
if num in sums:
sums[num] += num
else:
sums[num] = num
return sums
nums = [1, 2, 3, 2, 1]
result = group_sum(nums)
print(result)
```
输出结果为:{1: 2, 2: 4, 3: 3}
以上代码以给定的列表nums为例,通过遍历列表,并根据元素的值更新字典中元素对应的键值对来实现分组求和。最终输出结果为一个字典,其中键为元素的值,值为该元素在列表中的所有出现次数之和。
阅读全文