Python 如何在生成器表达式中执行临时赋值?
我使用一个生成器表达式来查找从文件中读取的长字符串中的关键字索引,但只关注在已经找到特定索引之后出现的关键字Python 如何在生成器表达式中执行临时赋值?,python,generator,Python,Generator,我使用一个生成器表达式来查找从文件中读取的长字符串中的关键字索引,但只关注在已经找到特定索引之后出现的关键字 end = min([fileStr.find(key) for key in keys if fileStr.find(key) > index]) 看起来find函数重复两次似乎有点不必要和混乱,第一次find的结果是否可以以某种方式再次引用到末尾的if表达式中 我检查了常规赋值是否正确,它产生了我所期望的语法错误 end = min([fileStr.find(key)=r
end = min([fileStr.find(key) for key in keys if fileStr.find(key) > index])
看起来find函数重复两次似乎有点不必要和混乱,第一次find的结果是否可以以某种方式再次引用到末尾的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)
您还有一个列表,而不是生成器表达式。
[]
不需要使用min
,使用[]
意味着首先创建完整列表在这种情况下,计算复杂度是多少?@dlask:o(n)。。。表达式中的只计算一次,在这种情况下是一个生成器此\u答案==答案(重复问题)