我正在做一些通用数据的pyplotting,并将其从功率值转换为dB值。由于这些值来自于系统,所以0被用作'有用的数据在此结束'指示符(数学的性质,而不是定义的值)。Python;异常感知地图()
我通常与这些交易被包裹在一个try转换/ except和返回默认的“低”值的方式,如
def f(value):
try:
return convert(value)
except ValueError:
return -140 #implementation specific, don't worry
这是非常愉快的90%使用我的框架内,除了绘图之外。
我很懒所以我在一分钟做的是:
pl.plot(xvals,map(f,yvals))
这正确绘制数据,当数据结束,掉价掉下悬崖,这是预期的行为。但是我想要发生的情况是,当它遇到一个ValueError异常,并且完全抛弃f()时,该图只能到结束。
除了把地图变成循环,任何人都有什么好的想法?
更新:
我使用Pylab/MatplotLib “端点” 是执行相关的;有时以上并不重要,因为没有“坏”价值。这一切都是为了让我懒惰,并使用matplotlibs图形缩放,而不是基于ydata的最小值重新设置动态ylim(在这种情况下,我不做atm,只是ylim(-140)。)
浮夸的重要更新在回答: unutbu的答案是我实际将用于我的实现,由于(在问题依赖项中没有提及),因为在这个经常使用的函数中提高StopIteration会造成无关 - 这个问题控制逻辑将所有这些其他实例放在try-except中;有时-inf比你想象的更有意义。
感谢大家的快速,我非常抱歉unutbu为QuestionFail。
问题是有点不清楚。如果你把地图分解成一个循环,你能展示它的样子吗? – Claudiu 2011-03-30 17:06:48