Понимание списка с заархивированными итераторами и условными выражениями - PullRequest
0 голосов
/ 31 января 2019

Я пытался заполнить список таким образом, чтобы, если для другого списка, содержащего логическое значение с индексом j, было значение True, я выполнял операцию (простое регулярное выражение) для другого списка, иначе решил (неявно) передать.

import re
maskNan = [True, True, False, True, False]
stringList = ['foo.abc','foo.def','foo.ghi','foo.jkl']
filteredNames = [re.findall(r'foo.(\w+)', i)[0] if j for i,j in zip(columnHeaders,maskNaN)]

Это дает мне SyntaxError: invalid syntax в конце для

, в то время как это прекрасно работает

justNames = [re.findall(r'foo.(\w+)', i)[0] for i in columnHeaders]

, давая

['abc','def','ghi','jkl']

1 Ответ

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

Основываясь на комментарии @ SimonF, правильное выражение должно быть

filteredNames = [re.findall(r'foo.(\w+)', i)[0] for i,j in zip(columnHeaders,maskNaN) if j ]
...