Python程序:显示嵌套列表中所有第二低成绩的学生姓名
在Python中,我们可以使用嵌套列表来表示学生成绩。每个学生的成绩都存储在一个列表中,所有学生的成绩再存储在一个父列表中。例如,下面是一个包含4个学生的成绩情况:
grades = [
['John', 85],
['Alice', 90],
['Bob', 75],
['Lee', 80]
]
在这个列表中,每个学生的成绩都是一个包含两个元素的列表,第一个元素是学生姓名,第二个元素是成绩。我们现在的问题是:如何找到所有第二低的成绩,并输出对应的学生姓名?
解决方案
为了解决这个问题,我们可以使用Python内置的排序函数sorted()
。首先,我们对成绩列表按照成绩从低到高排序,然后找到第二低的成绩,最后再遍历一遍成绩列表,输出对应的学生姓名。
下面是代码的实现:
grades = [
['John', 85],
['Alice', 90],
['Bob', 75],
['Lee', 80]
]
# 按照成绩从低到高排序
sorted_grades = sorted(grades, key=lambda x: x[1])
# 找到第二低的成绩
second_lowest_grade = sorted_grades[1][1]
# 输出所有第二低的成绩对应的学生姓名
for name, grade in grades:
if grade == second_lowest_grade:
print(name)
在这个代码中,sorted()
函数使用了一个关键字参数key
,这个参数指定了排序的规则。在本例中,我们使用了lambda
表达式来指定按照成绩从低到高排序。
接下来,我们使用sorted_grades[1][1]
来找到所有成绩中第二低的成绩。注意,这里使用了索引1
而不是0
来获取第二个元素,是因为列表是从0开始索引的。
最后,我们遍历一遍成绩列表,并比较每个学生的成绩与第二低的成绩是否相等。如果相等,就输出对应的学生姓名。
完整代码
下面是完整的Python代码:
grades = [
['John', 85],
['Alice', 90],
['Bob', 75],
['Lee', 80]
]
# 按照成绩从低到高排序
sorted_grades = sorted(grades, key=lambda x: x[1])
# 找到第二低的成绩
second_lowest_grade = sorted_grades[1][1]
# 输出所有第二低的成绩对应的学生姓名
for name, grade in grades:
if grade == second_lowest_grade:
print(name)
运行上面的代码,输出结果如下:
Lee
John
结论
在Python中,我们可以使用嵌套列表来表示学生成绩。为了找到所有第二低的成绩,我们可以使用sorted()
函数来排序,然后找到第二低的成绩,最后遍历一遍成绩列表,输出对应的学生姓名。