sort.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. '''
  2. sorted(iterable, key=None, reverse=False)
  3. Не пусть с методом списка .sort() - этот метод меняет сам список.
  4. Это чистая функция возвращает новый список.
  5. '''
  6. def test_1():
  7. my_list = ['123', 12, '5', 3, 53]
  8. print(sorted(my_list))
  9. def test_2():
  10. my_list = [1, 123, 12, 15, 10, 18]
  11. print(sorted(my_list, key=lambda x: (-len(str(x)), x)))
  12. def test_3():
  13. my_list = [
  14. (10, 10, 10),
  15. (8, 10, 12),
  16. (6, 12, 9),
  17. (10, 12, 14)
  18. ]
  19. s = sorted(my_list, key=lambda x: (-x[0], -x[2]), reverse=True)
  20. print(s[0])
  21. def print_results(lst):
  22. '''Информация выводится по убыванию оценок, а в случае их равенства
  23. предметы должны выводиться в обратном алфавитном порядке без учета регистра.'''
  24. sorted_lst = sorted(lst, key=lambda x: (x[1], x[0].lower()), reverse=True)
  25. for i in sorted_lst:
  26. print(i[0], i[1])
  27. def get_sort_lines(lst):
  28. 'Сортировка по длине отрезка, затем по координатом первой и второй точки'
  29. return sorted(lst, key=lambda x: (abs(x[1] - x[0]), x[0], x[1]))
  30. def main():
  31. # test_1()
  32. # test_2()
  33. # test_3()
  34. # marks = [('English', 88), ('Science', 90), ('Maths', 97), ('Physics', 93), ('History', 82)]
  35. # marks = [('English', 88), ('Science', 100), ('Maths', 81), ('Physics', 100), ('History', 82), ('Music', 100)]
  36. # marks = [('english', 100), ('Science', 100), ('maths', 100),
  37. # ('Physics', 100), ('history', 100), ('Music', 100)]
  38. # print_results(marks)
  39. lines = [(5, 6), (5, 4), (1, 0), (0, -1), (1, 2), (2, 1)]
  40. print(get_sort_lines(lines))
  41. # get_sort_lines(lines)
  42. if __name__ == '__main__':
  43. main()