我在python中执行一些生成1000个结果的模拟。每个结果都有多个属性,如风险,成本等
我现在想要确定符合某些标准的结果,例如:
Factor 1, cost should be between 10 and 20
Factor 2, risk should be between 0 and 5
Factor 3...
Factor 4...
....
目前我正在使用一系列嵌套的if语句来执行此操作。随着更多因素的增加,嵌套变得混乱。根据某些标准,是否有一种优雅的过滤方式?
答案 0 :(得分:6)
有很多解决方案取决于您的数据和首选代码样式。 E.g:
>>> conditions = (lambda x: 10 < x.cost < 20, lambda x: 0 < x.risk < 10)
>>> filter(lambda x: all(cond(x) for cond in conditions), result)
或者只是:
>>> conditions = lambda x: 10 < x.cost < 20 and 0 < x.risk < 10
>>> filter(conditions, result)
或者:
>>> [r for r in result if 10 < r.cost < 20 and 0 < r.risk < 10]