如何在生成器表达式中执行临时赋值?
How can I perform a temporary assignment in a generator expression?
我正在使用生成器表达式在从文件读取的长字符串中查找关键字的索引,但只关注出现在我已经找到的特定索引之后的关键字。
end = min([fileStr.find(key) for key in keys if fileStr.find(key) > index])
查找函数重复两次似乎有点不必要和混乱,是否可以在最后的 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
您可以嵌套生成器...
end = min(x for x in (fileStr.find(key) for key in keys)
if x > index)
我正在使用生成器表达式在从文件读取的长字符串中查找关键字的索引,但只关注出现在我已经找到的特定索引之后的关键字。
end = min([fileStr.find(key) for key in keys if fileStr.find(key) > index])
查找函数重复两次似乎有点不必要和混乱,是否可以在最后的 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
您可以嵌套生成器...
end = min(x for x in (fileStr.find(key) for key in keys)
if x > index)