สมมติว่าเรามีชื่อและเกรดของนักเรียนใน Nested List ต้องแสดงชื่อนักเรียนที่มีเกรดน้อยที่สุดอันดับ 2 (Second Lowest) ห้ามีหลายคน เรียงตามตัวอักษร พิมพ์ทีละบรรทัด
ตัวอย่าง students = [['Amal',37],['Bimal',37],['Tarun',36],['Akash',41],['Himadri',39]] ผลลัพธ์ = Amal, Bimal (เกรด 37 เป็นอันดับ 2 น้อยที่สุด)
ขั้นตอนการแก้ปัญหา
- min_mark := ค่าเกรดน้อยที่สุดจาก students
- students := กรองเฉพาะที่เกรด > min_mark
- min2_mark := ค่าเกรดน้อยที่สุดของที่เหลือ
- students := เรียงชื่อที่มีเกรด = min2_mark
- พิมพ์แต่ละชื่อ
ตัวอย่างโค้ด
def solve(students):
min_mark = min(x[1] for x in students)
students = [x for x in students if x[1] > min_mark]
min2_mark = min(x[1] for x in students)
students = sorted([x[0] for x in students if x[1] == min2_mark])
for x in students:
print(x)
students = [['Amal',37],['Bimal',37],['Tarun',36],['Akash',41],['Himadri',39]]
solve(students)
อินพุต
[['Amal',37],['Bimal',37],['Tarun',36],['Akash',41],['Himadri',39]]
เอาต์พุต
Amal Bimal