List Overlap - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/Forum-Python-Coding) +--- Forum: Homework (https://python-forum.io/Forum-Homework) +--- Thread: List Overlap (/Thread-List-Overlap) List Overlap - Josh_Python890 - Jun-12-2019 I'm doing online problems to get me back into python after not touching it for a couple of years. Problem comes from http://www.practicepython.org/exercise/2014/03/05/05-list-overlap.html Take two lists, say for example these two: a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] and write a program that returns a list that contains only the elements that are common between the lists (without duplicates). Make sure your program works on two lists of different sizes. Extras: Randomly generate two lists to test this Write this in one line of Python (don’t worry if you can’t figure this out at this point - we’ll get to it soon) This is my attempt but it doesn't work: ```def exc5(): a = random.sample(range(20), 10) b = random.sample(range(20), 10) c = [i for i in a if a in b] print(a) print(b) print(c) exc5() ```Sample output: ``````Output: [9, 17, 6, 4, 12, 16, 18, 5, 1, 7] [4, 5, 19, 12, 9, 18, 14, 2, 8, 11] [] ``````As you can see the numbers which are in both lists should be in the third list but it's an empty list. I am aware you can do this with sets but I'm interested as to why this doesn't work. RE: List Overlap - micseydel - Jun-12-2019 You want "if i in b" not "if a in b". Also the `in` operator in this case will not be efficient for large inputs. Happy to talk about that if you want but waiting so as to not hijack your thread. RE: List Overlap - perfringo - Jun-12-2019 “without duplicates” requirement directs my thoughts toward sets. Sonething like: convert lists to sets, do set operation, convert result to list. Edit: need to read more carefully, you already considered sets. My mistake. RE: List Overlap - micseydel - Jun-12-2019 Yes, sets are exactly what you'd use to improve the efficiency. RE: List Overlap - kotter - Jun-12-2019 I believe your fourth line is wrong. You have: ```c = [i for i in a if a in b] ```But it should be: ```c = [i for i in a if i in b] ```Edit: This was already said, never mind