class LinkedListTests(unittest.TestCase): def setUp(self): self.list = LinkedList() def test_add_to_tail(self): self.list.add_to_tail(1) self.assertEqual(self.list.tail.value, 1) self.assertEqual(self.list.head.value, 1) self.list.add_to_tail(2) self.assertEqual(self.list.tail.value, 2) self.assertEqual(self.list.head.value, 1) def test_contains(self): self.list.add_to_tail(1) self.list.add_to_tail(2) self.list.add_to_tail(5) self.list.add_to_tail(10) self.assertTrue(self.list.contains(10)) self.assertTrue(self.list.contains(2)) self.assertFalse(self.list.contains(1000)) def test_remove_head(self): self.list.add_to_tail(10) self.list.add_to_tail(20) self.assertEqual(self.list.remove_head(), 10) self.assertFalse(self.list.contains(10)) self.assertEqual(self.list.remove_head(), 20) self.assertFalse(self.list.contains(20)) self.list.add_to_tail(10) self.assertEqual(self.list.remove_head(), 10) self.assertIsNone(self.list.head) self.assertIsNone(self.list.tail) self.assertIsNone(self.list.remove_head())
# if name_1 == name_2: # duplicates.append(name_1) ######### # Using comprehensions # duplicates = [name for name in names_1 if name in names_2] ######## # Using Linked List # create a new list names_1_list = LinkedList() # put names_1 in list for name in names_1: names_1_list.add_to_head(name) # Check to see if each item of list 2 is in list 1 for name in names_2: if names_1_list.contains(name): duplicates.append(name) end_time = time.time() print(f"{len(duplicates)} duplicates:\n\n{', '.join(duplicates)}\n\n") print(f"runtime: {end_time - start_time} seconds") # ---------- Stretch Goal ----------- # Python has built-in tools that allow for a very efficient approach to this problem # What's the best time you can accomplish? There are no restrictions on techniques or data # structures, but you may not import any additional libraries that you did not write yourself.