''' sorted(iterable, key=None, reverse=False) Не пусть с методом списка .sort() - этот метод меняет сам список. Это чистая функция возвращает новый список. ''' def test_1(): my_list = ['123', 12, '5', 3, 53] print(sorted(my_list)) def test_2(): my_list = [1, 123, 12, 15, 10, 18] print(sorted(my_list, key=lambda x: (-len(str(x)), x))) def test_3(): my_list = [ (10, 10, 10), (8, 10, 12), (6, 12, 9), (10, 12, 14) ] s = sorted(my_list, key=lambda x: (-x[0], -x[2]), reverse=True) print(s[0]) def print_results(lst): '''Информация выводится по убыванию оценок, а в случае их равенства предметы должны выводиться в обратном алфавитном порядке без учета регистра.''' sorted_lst = sorted(lst, key=lambda x: (x[1], x[0].lower()), reverse=True) for i in sorted_lst: print(i[0], i[1]) def get_sort_lines(lst): 'Сортировка по длине отрезка, затем по координатом первой и второй точки' return sorted(lst, key=lambda x: (abs(x[1] - x[0]), x[0], x[1])) def main(): # test_1() # test_2() # test_3() # marks = [('English', 88), ('Science', 90), ('Maths', 97), ('Physics', 93), ('History', 82)] # marks = [('English', 88), ('Science', 100), ('Maths', 81), ('Physics', 100), ('History', 82), ('Music', 100)] # marks = [('english', 100), ('Science', 100), ('maths', 100), # ('Physics', 100), ('history', 100), ('Music', 100)] # print_results(marks) lines = [(5, 6), (5, 4), (1, 0), (0, -1), (1, 2), (2, 1)] print(get_sort_lines(lines)) # get_sort_lines(lines) if __name__ == '__main__': main()