Список выбрать из другого списка с помощью регулярного выражения - PullRequest
0 голосов
/ 19 января 2019

Мой код работает, но однострочник (map, filter, zip или что-нибудь еще) был бы более хорошим решением

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)

Ответы [ 3 ]

0 голосов
/ 19 января 2019

Вот решение с использованием карты, фильтра и почтового индекса

b = list(map(lambda x: x[1], filter(lambda x: re.match(r'^1\/', x[0]) != None, zip(form_win,form_chr))))
0 голосов
/ 19 января 2019

Вы можете оптимизировать свой код следующим образом:

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))])
0 голосов
/ 19 января 2019

Вы можете использовать:

b = [form_chr[cnt] for cnt, a in enumerate(form_win) if re.match(r'^1\/', a) is not None]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...