Define a function overlapping() that takes two lists and returns True if they have at least one member in common, False otherwise.
- You may use your is_member() function, or the in operator.
- But for the sake of the exercise, you should (also) write it using two nested for-loops.
I mainly compare Python's in-built set functions against 'standard' looping mechanisms.
The results of all 3 solutions are the same. Only the implementation differs.
Solution #1 uses the Set's
.intersection() method, to find common elements between two lists.
Solution #2 loops against two lists, and maintains another list of common elements to check against.
Solution #3 loops against one list only. It breaks immediately when a common member is found. (Reason: the condition is to "have at least one member in common", and not anything more complex. ) This is possibly a performant solution, but also one likely to introduce bugs.
I'd go with Solution #1 - it appears cleanest. Also, due to the use of sets, is perhaps more performant than Solution #3.
def overlapping_1(l1, l2) -> bool: if set(l1).intersection(l2): return True else: return False def overlapping_2(l1, l2) -> bool: common =  for i in l1: for j in l2: if i == j: common.append(i) if common != : return True else: return False def overlapping_3(l1, l2) -> bool: for i in l1: if i in l2: return True # Immediately exit else: return False if __name__ == "__main__": test_l1 = ["a", "b", "c"] test_l2 = ["c", "d", "e"] test_l3 = [1, 2, 3] funcs = overlapping_1, overlapping_2, overlapping_3 for f in funcs: print(f(test_l1, test_l2), test_l1, test_l2) print(f(test_l1, test_l3), test_l1, test_l3)