我一直在尝试填充一个列表,以便如果另一个列表在索引 j 处包含 bool 值为 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:无效语法
在for结尾
虽然这工作正常
justNames = [re.findall(r'foo.(\w+)', i)[0] for i in columnHeaders]
给予
['abc','def','ghi','jkl']
最佳答案
根据@SimonF的评论,正确的表达应该是
filteredNames = [re.findall(r'foo.(\w+)', i)[0] for i,j in zip(columnHeaders,maskNaN) if j ]
关于python - 使用压缩迭代器和条件的列表理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54450132/