用Python统计学生课程成绩,利用到二维列表和Lambda函数
时间: 2023-12-03 20:46:21 浏览: 46
假设有一个学生课程成绩的二维列表,每一行表示一个学生的成绩,每一列表示一门课程的成绩。我们可以使用Python中的Lambda函数和二维列表统计学生课程成绩。
例如,有如下的学生课程成绩二维列表:
```python
grades = [
[80, 75, 90],
[60, 70, 80],
[70, 80, 90]
]
```
我们可以使用Python中的Lambda函数计算每个学生的总分和平均分,并将计算结果存储在一个新的列表中:
```python
totals = list(map(lambda x: sum(x), grades))
averages = list(map(lambda x: sum(x) / len(x), grades))
```
上述代码中,`map()` 函数将 Lambda 函数应用到每一行(学生)的成绩上,计算总分和平均分,并将结果存储在 `totals` 和 `averages` 列表中。
我们也可以使用列表推导式实现相同的功能:
```python
totals = [sum(row) for row in grades]
averages = [sum(row) / len(row) for row in grades]
```
上述代码中,列表推导式遍历每一行(学生)的成绩,计算总分和平均分,并将结果存储在 `totals` 和 `averages` 列表中。
除了计算每个学生的总分和平均分,我们还可以使用Lambda函数计算每门课程的平均分:
```python
course_averages = list(map(lambda x: sum(x) / len(grades), zip(*grades)))
```
上述代码中,`zip(*grades)` 将每一列(课程)的成绩组合在一起,`map()` 函数将 Lambda 函数应用到每一列(课程)的成绩上,计算平均分,并将结果存储在 `course_averages` 列表中。
我们也可以使用列表推导式实现相同的功能:
```python
course_averages = [sum(col) / len(grades) for col in zip(*grades)]
```
上述代码中,列表推导式使用 `zip(*grades)` 遍历每一列(课程)的成绩,计算平均分,并将结果存储在 `course_averages` 列表中。