【发布时间】:2020-03-03 09:45:18
【问题描述】:
我正在学习如何优化 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] 但我不确定它是什么意思。
任何帮助将不胜感激
【问题讨论】:
-
一旦你修复了语法错误,这仍然没有意义。生成器创建一个
((prob, im), (prob, im), (prob, im), ...)形式的元组,然后将其分配给两个变量。 -
仅供参考,第一个循环可以简化为
best = max(probabiliites) -
@Barmar 如果
prob的值等于best,我想将元组的值放在变量prob 和im 中。 -
另外我不知道有max函数,谢谢提供信息
-
您想获取生成器中选择的所有
prob和im值的单独元组吗?
标签: python for-loop zip syntax-error