Skip to content Skip to sidebar Skip to footer

Filter List Of Strings Using List Comprehension

>>> li = ['a b self', 'mpilgrim', 'foo c', 'b', 'c', 'b', 'd', 'd'] >>> condition = ['b', 'c', 'd'] >>> [elem for elem in li if elem in condition] ['b',

Solution 1:

Assuming the code needs to retrieve all the strings that contain any of the conditions strings:

[elem for elem in li if any(c in elem for c in condition)]

In case a full match of a condition is required:

[elem for elem in li if
 any(re.search('(^|\s){}(\s|$)'.format(c), elem) for c in condition)]

Edit: This can be simplified to a single pre-defined regex:

predicate = re.compile('(^|\s)({})(\s|$)'.format('|'.join(condition)))

[elem for elem in li if predicate.search(elem)]

Post a Comment for "Filter List Of Strings Using List Comprehension"