Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在生成器表达式中执行临时赋值?_Python_Generator - Fatal编程技术网

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答案==答案(重复问题)