How to convert this loop into list comprehension?

Viewed 107

Hello i would like make list comprehension for two loops and return value from first loop. I have example:

rows = []
for row in value:
    for pattern, sub_pattern in zip(pattern_tag, sub_pattern_list):
        row = re.sub(pattern, sub_pattern, row)
    rows.append(row)

how do I make a list, through list Comprehension, so that it gives the same result

1 Answers

This is probably not what you were looking for, but it's still a one-liner that makes use of the functools.reduce function:

from functools import reduce
from re import sub

rows = [
    reduce(
        lambda prev, curr: sub(*curr, prev),
        zip(pattern_tag, sub_pattern_list),
        row,
    )
    for row in value
]
Related