У меня есть функция для выделения комков из списка строк и возврата их в виде другого списка:
def filterPick(lines,regex):
result = []
for l in lines:
match = re.search(regex,l)
if match:
result += [match.group(1)]
return result
Есть ли способ переформулировать это как понимание списка? Очевидно, это довольно ясно, как есть; просто любопытно.
Спасибо тем, кто внес свой вклад, специально для @Alex. Здесь конденсированная версия того, с чем я столкнулся; метод совпадения регулярных выражений передается filterPick как "предварительно поднятый" параметр:
import re
def filterPick(list,filter):
return [ ( l, m.group(1) ) for l in list for m in (filter(l),) if m]
theList = ["foo", "bar", "baz", "qurx", "bother"]
searchRegex = re.compile('(a|r$)').search
x = filterPick(theList,searchRegex)
>> [('bar', 'a'), ('baz', 'a'), ('bother', 'r')]