how to keep elements of a list based on another list [duplicate]

Using in operator, you can check whether an element is in a seqeunce.

>>> list2 = ['a','c','z','y']
>>> 'x' in list2
False
>>> 'y' in list2
True

Using list comprehension:

>>> list1 = ['a','a','b','b','b','c','d','e','e','g','g']
>>> list2 = ['a','c','z','y']
>>> [x for x in list1 if x in list2]
['a', 'a', 'c']

But x in list is not efficient. You’d better convert list2 to a set object.

>>> set2 = set(list2)
>>> [x for x in list1 if x in set2]
['a', 'a', 'c']

Leave a Comment