列表推导式与条件?
我想看看能不能用列表推导式来优化这段代码。
假设我有以下这些列表:
a_list = [
'HELLO',
'FOO',
'FO1BAR',
'ROOBAR',
'SHOEBAR'
]
regex_list = [lambda x: re.search(r'FOO', x, re.IGNORECASE),
lambda x: re.search(r'RO', x, re.IGNORECASE)]
我基本上想把所有在 regex_list
中没有匹配项的元素,添加到另一个列表里。
比如说,结果应该是这样的 ==>
newlist = []
for each in a_list:
for regex in regex_list:
if(regex(each) == None):
newlist.append(each)
我该怎么用列表推导式来实现这个呢?这样做可能吗?
2 个回答
0
我把你的代码简化成这样:
a_list = [
'HELLO',
'FOO',
'FO1BAR',
'ROOBAR',
'SHOEBAR'
]
regex_func = lambda x: not re.search(r'(FOO|RO)', x, re.IGNORECASE)
然后你有两个选择:
过滤
newlist = filter(regex_func, a_list)
列表推导式
newlist = [x for x in a_list if regex_func(x)]
18
当然,我觉得这样做应该可以。
newlist = [s for s in a_list if not any(r(s) for r in regex_list)]
编辑: 经过仔细检查,我发现你的示例代码实际上是将