Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

중첩 목록에서 두 번째로 낮은 학년 학생 이름을 모두 표시하는 Python 프로그램

<시간/>

중첩 목록에 각 학생의 이름과 성적이 있다고 가정하고 두 번째로 낮은 성적을 가진 학생의 이름을 표시해야 합니다. 두 번째로 낮은 학년을 가진 학생이 한 명 이상인 경우 알파벳 순서로 재정렬하고 각 이름을 새 줄에 인쇄하십시오.

따라서 입력이 학생과 같은 경우 =[['Amal',37],['Bimal',37],['Tarun',36],['Akash',41],['Himadri',39]] , 그러면 출력은 Amal이 되고 Bimal은 둘 다 두 번째로 낮은 점수 37을 가지며 알파벳 순서로 배치됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • min_mark :=학생의 모든 x에 대한 최소 점수
  • students :=점수가> min_mark
  • 인 경우 학생의 모든 x에 대한 학생 목록 x
  • min2_mark :=학생의 모든 x에 대한 최소 점수
  • students :=목록 정렬 [x의 점수가 다음과 같으면 학생의 모든 x에 대해 x의 이름으로
  • min2_mark]
  • 학생의 각 x에 대해 다음을 수행합니다.
    • 디스플레이 x

예시

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

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