我有一个像这样的变量的比较列表
['x < 0.15', 'x > -inf', 'x < 0.20', 'x > -5.5']
如何将这些比较合并为结果'(-5.5, 0.15)'
。
我看到没有数据结构支持python中连续实数范围的表示
答案 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))