python嵌套列表(Nested List)

题目要求:

        给定每个学生的姓名和成绩,将它们存储在嵌套列表中,并打印出成绩第二低的学生的姓名。如果有多个学生成绩第二低,则按字母顺序打印他们的姓名。

使用到的函数:

set()

        将成绩列表转换为集合,集合自动去重,因此相同的成绩只会出现一次。 

sorted()

         对去重后的成绩集合进行排序,得到一个有序的列表,列表中的成绩从低到高排列。

        如果想从高到低排列,只需加入reverse参数:

sorted(..., reverse=True)

 完整代码:

if __name__ == '__main__':
    # 读取学生姓名和成绩并存储在嵌套列表中
    students = []
    for _ in range(int(input())):
        name = input()
        score = float(input())
        students.append([name, score])
    # 提取所有成绩并找到唯一的成绩集合
    scores = sorted(set([score for name, score in students])) 
    # 找到第二低的成绩
    second_lowest_score = scores[1]    
    # 找到所有成绩为第二低的学生
    second_lowest_students = [name for name, grade in students if grade == second_lowest_score]
    # 按字母顺序排序学生姓名
    second_lowest_students.sort()
    # 打印结果
    for student in second_lowest_students:
        print(student)

        其中 

scores = sorted(set([score for name, score in students]))
second_lowest_students = [name for name, grade in students if grade == second_lowest_score]

        均为列表推导式, 以for为分割,前面为表达式部分,后面为循环语句。

输出结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值