我有大量具有 p 和 u 属性的功能。我想在数组中找到最小和最高的 p 和 u 并在循环中创建这个 switch 语句。这在大约 99.9% 的时间内有效。然而。我有一个数据集,其中最大值和最小值是相同的,即使这些值分布均匀并且平均值不同。难住了。
switch(true) {
case p > max_p:
max_p = p;
case u > max_u:
max_u = u;
case p < min_p:
min_p = p;
case u < min_u:
min_u = u;
}
我在 firebug 中运行循环,可以看到如果 u < max_u,max_u 有时会更新。例如 u = 0.066,max_u = 0.088。
Pycharm 告诉我一个失败的问题,但该语句在我扔给它的所有其他数据集上都可以正常工作。
我可以将声明一分为二。性能损失很小,但我想了解这是如何发生的。
谢谢,丹尼斯
编辑:
拆分为两个语句,数据集完全正常工作,语句中没有中断。
switch(true) {
case p > max_p:
max_p = p;
case p < min_p:
min_p = p;
}
switch(true) {
case u > max_u:
max_u = u;
case u < min_u:
min_u = u;
}
编辑:我接受了给出的答案,但我仍然不明白为什么会发生这样的事情。