Использование вложенных списков для поиска второго наименьшего балла (ов)
n = int(input())
становится первым значением 5
, введенным выше, которое указывает, сколько учащихся вместе с их общими баллами указано в списке.
nlist = [[input(), float(input())] for _ in range(n)]
перебирает введенные учащиеся/баллы. [input(), float(input())]
устанавливает формат каждого вложенного списка, например. ['Harry', 37.21]
. nlist
хранит вложенные списки: [['Harry', 37.21], ['Berry', 37.21], ['Tina', 37.2], ['Akriti', 41.0], ['Harsh', 39.0]]
.
second_lowest = sorted(list(set([marks for name, marks in nlist])))[1]
получает второй самый низкий балл. Функция set()
удаляет лишнее значение 37.21
, чтобы можно было проиндексировать второе самое низкое значение, например. [1]
.
Наконец, '\n'.join([a for a, b in sorted(nlist) if b == second_lowest])
предназначен для повторения одинаковых вторых самых низких оценок, их сортировки и печати построчно, аналогично формату.
После выполнения скрипта введите данные вручную, как показано ниже:
$ python nested_list_comprehensions.py 5 Harry 37.21 Berry 37.21 Tina 37.2 Akriti 41 Harsh 39
Скрипт напечатает учеников со вторыми наименьшими баллами:
Berry Harry