如何在生成器表达式中执行临时赋值?

时间:2015-05-28 09:30:37

标签: python generator

我正在使用生成器表达式来查找从文件读取的长字符串中的关键字索引,但只关注在我已经找到的特定索引之后出现的键。

end = min([fileStr.find(key) for key in keys if fileStr.find(key) > index])

看起来有点不必要和混乱看起来让find函数重复两次,第一次找到的结果是否会以某种方式再次引用if结尾的if表达式?

我检查了是否会进行常规分配,并且它会产生我预期的语法错误。

end = min([fileStr.find(key)=result for key in keys if result > index])
SyntaxError: invalid syntax
end = min([(fileStr.find(key)=result) for key in keys if result > index])
SyntaxError: invalid syntax
end = min([(result=fileStr.find(key)) for key in keys if result > index])
SyntaxError: invalid syntax

1 个答案:

答案 0 :(得分:2)

你可以嵌套发电机......

end = min(x for x in (fileStr.find(key) for key in keys)
          if x > index)