我有一个for循环遍历一个浮点列表。我的初衷是,如果我的数据是>我可以使用if语句执行for循环'do stuff'。比x百分比...但是我已经意识到这种方法会导致数据重复出现。事实上是正确的,但这不是我想要的,也不是我想要的。所以,我的模拟数据有一些比实际更大的东西,它会触发所有较低百分比的if条件。我真的只是希望它触发最大的百分比而不是下面的较小条件...我怎么能以最pythonic的方式做到这一点?
这是我汇总的示例代码解决方案,但我认为必须使用try / catch块引发异常可能不像其他解决方案那样干净。
#!/usr/bin/env python
percentages = [0.2,0.5, 0.75, 1, 2, 5]
resultingPercentage = 9
for i in sorted(percentages, reverse=True):
try:
if resultingPercentage > i:
print "We found an opportunity greater than %.2f%% points" %i
raise Exception
except:
#continue
break
答案 0 :(得分:1)
看到没有其他人将其作为答案发布并将此问题标记为已回答,您可以在没有break
语句出现在异常处理程序中的情况下突破循环:
percentages = [0.2,0.5, 0.75, 1, 2, 5]
resultingPercentage = 9
for i in sorted(percentages, reverse=True):
if resultingPercentage > i:
print "We found an opportunity greater than %.2f%% points" %i
break
答案 1 :(得分:0)
您可以使用max
函数从列表中获取最大百分比,然后只使用该百分比执行单个if
语句:
percentages = [0.2,0.5, 0.75, 1, 2, 5]
resultingPercentage = 9
maxPercentage = max(percentages)
if resultingPercentage > maxPercentage:
print "We found an opportunity greater than %.2f%% points" %maxPercentage