首页 > 解决方案 > 在 zip 对象上使用 for 循环时出现无效的语法错误

问题描述

我正在学习如何优化 python 3.7 中的循环,但我不断收到“无效的语法错误”。我已经检查了缺少的括号。这是代码:

    best = probabilities[0]
    best = (probabilities[i] for i in range(1, len(probabilities)) if probabilities[i] > best)
    print(best)
    prob, im = (prob, im for prob, im in zip(probabilities, image_names) if prob == best)

    return (prob, im)

给我错误

  File "path", line 27
    prob, im = (prob, im for prob, im in zip(probabilities, image_names) if prob == best)
                           ^
SyntaxError: invalid syntax

我不确定出了什么问题,因为我在另一个练习中使用的以下代码使用了几乎相同的语法:

im = [im for im, prob in zip(image_names, probabilities) if prob >= threshold]
    return (im)

编辑:我也试过

return (prob, im for prob, im in zip(probabilities, image_names) if prob == best)

它说变量类型是 Generator[tuple[float, str], Any, None] 但我不确定它是什么意思。

任何帮助将不胜感激

标签: pythonfor-loopzipsyntax-error

解决方案


()元组在由理解/生成器表达式生成时需要显式包装:

((prob, im) for prob, im in zip(probabilities, image_names) if prob == best) 

推荐阅读