合并严格的数值比较

时间:2019-02-06 06:05:50

标签: python

我有一个像这样的变量的比较列表

['x < 0.15', 'x > -inf', 'x < 0.20', 'x > -5.5']

如何将这些比较合并为结果'(-5.5, 0.15)'

我看到没有数据结构支持python中连续实数范围的表示

2 个答案:

答案 0 :(得分:5)

您可以使用sympy来解决不等式:

In [1]: from sympy import oo, solve

In [2]: from sympy.abc import x

In [3]: from sympy.parsing.sympy_parser import parse_expr

In [4]: system = ['x < 0.15', 'x > -inf', 'x < 0.20', 'x > -5.5']

In [5]: solve([parse_expr(x, local_dict={'inf': oo}) for x in system])
Out[5]: (-5.5 < x) & (x < 0.15)

答案 1 :(得分:0)

纯Python中的一种方法:

myList = ['x < 0.15', 'x > -inf', 'x < 0.20', 'x > -5.5']


def andRange(lst):
    gt = []
    lt = []
    for rng in lst:
        if "<" in rng:
            strVal = rng.split("<")[1]
            if strVal.strip() != "inf":
                lt.append(float(strVal))
        if ">" in rng:
            strVal = rng.split(">")[1]
            if strVal.strip() != "-inf":
                gt.append(float(strVal))
    return (min(lt), max(gt))


print(andRange(myList))