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

标签 python generator

<分区>

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

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)

关于python - 如何在生成器表达式中执行临时赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30502558/

相关文章:

python - 使用 Python 获取视频属性而不调用外部软件

python - AWS Lambda python 函数从 S3 解析 json 并存储在 DynamoDB 中

python - 如何从生成器构建 numpy 数组?

python - 将生成器函数子类化是否可能且可取?

python - python 的单词搜索生成器问题

testing - 生成测试用例

python手套相似度计算

python - 如何返回包含公共(public)元素且不重复的列表

python - 自动填充子图

python - 没有名为 mem_profile 的模块