I have two lists looking like:
list1 = ['a','a','b','b','b','c','d','e','e','g','g']
list2 = ['a','c','z','y']
What I want to do is to keep all those elements of list1 that are also in list2. the outcome should be:
outcome= ['a','a','c']
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']
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With