再见。 我一直在搜索相关的帖子,但没有找到理想的解决方案。让我描述一下我的问题:
我从语料库中分析文本,并从这些文本中提取特征,然后将这些特征存储在一个数组中。其中一些特征涉及比例,例如男性代词“he”与女性代词“she”的比例。问题是,对于一些变量,值将为零,它们将产生零除法误差。在
因为我计算了大约100个这样的比率,所以在每个比率计算中包装try/catch异常听起来太麻烦了。在
我发现我能做到
#16,RATIO_masculine_femenine
feature_map.append(numOfHe / numOfShe if numOfShe else 0)
但还是有点太费劲了。 我想知道是否有一种方法可以在脚本请求时声明,任何zero divisionerror都应该用NaN或0或任何其他合适的值来代替。在
谢谢
python的答案是将它包装在一个函数中,例如:
函数的确切形式取决于其余的代码,但是如果你要写上几百次这样的代码,那么你应该把它包装在一个函数中,或者至少使用一个循环。另外,像
numOfHe
和numOfShe
这样的变量名暗示您最好使用dict更新
我从你的代码链接中看到每个计算实际上是完全不同的,所以你可能不容易循环它。由于计算仍然相对简单,您可以尝试使用
^{pr2}$eval
的技巧,如下所示:您还可以将其他信息添加到
calcs
,并使用namedtuple。如果有帮助的话,您也可以使用类来动态评估calc。在如果将
int
对象包装在自定义子类中,则可以对其寻址一次:重写所有
^{pr2}$int
s:重写一些的
int
:但是你要小心保护这个物体。您会注意到我在
__div__
中返回的所有内容都包装在SafeInt()
中。int
对象是不可变的,每次都必须显式地返回一个新的SafeInt
对象。这意味着您可能需要为SafeInt()
中的每个函数生成一个decorator来确保。我把这作为练习留给读者!在否则你会得到这样的结果:
最后一个注意事项:您可以将
SafeInt
作为参数传递给defaultdict
,使所有成员SafeInt
!在编辑:知道你想让它发生在all
int
s上,我希望这样的事情可能会奏效,但这是不允许的(有充分的理由):相关问题 更多 >
编程相关推荐