Advertisement
Guest User

Untitled

a guest
Dec 17th, 2018
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.58 KB | None | 0 0
  1. """PR15 Statistics - lambdas."""
  2.  
  3.  
  4. class Person:
  5. """Represent a person."""
  6.  
  7. def __init__(self, first_name, last_name, email, gender, age):
  8. """Person class constructor."""
  9. self.first_name = first_name
  10. self.last_name = last_name
  11. self.email = email
  12. self.gender = gender
  13. self.age = age
  14.  
  15. def __repr__(self):
  16. """Person class representative."""
  17. return f"{self.first_name},{self.last_name},{self.email},{self.gender},{self.age}"
  18.  
  19.  
  20. def get_oldest_person(person_list):
  21. """
  22. Return the person with the highest age.
  23.  
  24. :param person_list: input list
  25. :return: Person object
  26. """
  27. return sorted(person_list, key=lambda person: person.age, reverse=True)[0]
  28.  
  29.  
  30. def get_person_with_shortest_name(person_list):
  31. """
  32. Return the person with the shortest name (first name + last name).
  33.  
  34. :param person_list:
  35. :return:
  36. """
  37. return sorted(person_list, key=lambda person: len(person.first_name) + len(person.last_name))[0]
  38.  
  39.  
  40. def get_all_underage_people(person_list):
  41. """
  42. Return a list of all underage (under 18) people in the given list.
  43.  
  44. :param person_list: input list of Person objects
  45. :return: list of all underage people
  46. """
  47. return [name for name in person_list if name.age < 18]
  48.  
  49.  
  50. def filter_list_by_gender(person_list, gender):
  51. """
  52. Filter the given list by the given gender.
  53.  
  54. :param person_list: input list of Person objects
  55. :param gender: string 'Male' or 'Female'
  56. :return: a list of persons with the given gender
  57. """
  58. return [person for person in person_list if person.gender == gender]
  59.  
  60.  
  61. def get_people_with_government_emails(person_list):
  62. """
  63. Return a list of all people with an email ending with '.gov'.
  64.  
  65. :param person_list: input list
  66. :return: a list of Person objects with an government email.
  67. """
  68. return [person for person in person_list if ".gov" in person.email[len(person.email) - 4:]]
  69.  
  70.  
  71. def sort_list_by_email_length(person_list):
  72. """
  73. Sort the given list by the length of a persons email in ascending order.
  74.  
  75. :param person_list: input list
  76. :return: a sorted list of Person objects
  77. """
  78. return sorted(person_list, key=lambda person: len(person.email))
  79.  
  80.  
  81. def get_list_of_all_names_in_uppercase(person_list):
  82. """
  83. Return a list of the first names of all persons in the list, in uppercase.
  84.  
  85. :param person_list: input list
  86. :return: a list of uppercase first names
  87. """
  88. return [person.first_name.upper() for person in person_list]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement