列表从另一个列表中选择正则表达式

问题描述 投票:1回答:3

我的代码有效,但是单行(mapfilterzip或其他任何东西)将是一个更好的解决方案

form_win = ['2/5','1/4','3/2','4/1','5/8','1/3','7/10','8/6']
form_chr = ['a','b','c','d','e','f','g','h']

b=[]
for cnt, a in enumerate(form_win):
    if re.match(r'^1\/', a) != None:
        b.extend(form_chr[cnt])
print ('uglyst:',b)
python list
3个回答
0
投票

这是一个使用map,filter和zip的解决方案

b = list(map(lambda x: x[1], filter(lambda x: re.match(r'^1\/', x[0]) != None, zip(form_win,form_chr))))

1
投票

您可以使用:

b = [form_chr[cnt] for cnt, a in enumerate(form_win) if re.match(r'^1\/', a) is not None]

0
投票

您可以按如下方式优化代码:

import re

form_win = ['2/5','1/4','3/2','4/1','5/8','1/3','7/10','8/6']
form_chr = ['a','b','c','d','e','f','g','h']

print('uglyst:',[ form_chr[cnt]  for cnt, a in enumerate(form_win) if(re.match(r'^1\/', a))])
© www.soinside.com 2019 - 2024. All rights reserved.