我怎样才能 select 只有数组中的实数? (Python 3)

How can I select only the real numbers from an array? (Python 3)

我想找到垂直渐近线:

f=(3x^3 + 17x^2 + 6x + 1)/(2x^3 - x + 3)

所以我想找到 (2x^3 - x + 3) 的根,所以我写道:

 import sympy as sy
 x = sy.Symbol('x', real=True)
 asym1 = sy.solve(2*x**3-x+3,x)
 for i in range(len(asym1)):
     asym1[i] = asym1[i].evalf()
 print(asym1)


输出为:

[0.644811950742531 + 0.864492542166306*I, 0.644811950742531 - 
0.864492542166306*I, -1.28962390148506]

所以现在输出中唯一有意义的数字是 -1.289,复数没有任何意义。

我的问题是:我怎样才能只 select 实数,所以输出显示:

asym1 = -1.28962390148506

你可以做到:

asym1 = [n for n in asym1 if n.is_real][0]    

复数是 complex class 的实例,而实数 是 floats:

asym1 = [x for x in asym1 if isinstance(x, float)]