/
12.02.2021 at 12:55 am
Cuttings

46 Simple Python Exercises/#10

Find common list members.

... 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.
  1. I mainly compare Python's in-built set functions against 'standard' looping mechanisms.

  2. The results of all 3 solutions are the same. Only the implementation differs.

  3. Solution #1 uses the Set's .intersection() method, to find common elements between two lists.

  4. Solution #2 loops against two lists, and maintains another list of common elements to check against.

  5. 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.

  6. I'd go with Solution #1 - it appears cleanest. Also, due to the use of sets, is perhaps more performant than Solution #3.

Code
                        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)
                    
Filed under:
#
#
Words: 138 words approx.
Time to read: 0.55 mins (at 250 wpm)
Keywords:
, , , , , , , , ,

Other suggested posts

  1. 17.10.2022 at 12:31 pm / AI Art Is Real Art
  2. 06.06.2022 at 12:26 pm / To Teach or To Paint
  3. 24.01.2016 at 12:00 am / Prayers Like Magic
  4. 03.01.2016 at 12:00 am / Creators And Their Gems (Polished or Otherwise)
  5. 24.10.2015 at 12:00 am / Salomon v Salomon is Antiquated
  6. 20.06.2015 at 12:00 am / Mike Tyson on (His) Lawyers
  7. 11.12.2013 at 12:00 am / Lighting Wizardry
  8. 20.04.2012 at 12:00 am / A Misty Morgue's Bat
  9. 02.04.2012 at 12:00 am / Abstract Wall Painting
  10. 20.08.2010 at 12:00 am / 堰かれて募る恋の情
© Wan Zafran. See disclaimer.