假设我有一个多项式的系数列表,按指数的降序排列(如果len(list) == x
则指数的范围从整数x-1到0)。我想删除&#34; small&#34;所述列表的元素,意思是abs(element) > 0 and abs(element) < .000001
,但保持多项式的指数不是&#34;小。&#34;
我如何在Python 3.0中完成此操作?
这是我在上下文中想要的一个例子:
my_list = [3.000000000000000e-12, 4.99999999999948, 4.00000000000002, -0.000042535500000e-15, -0.200000000000000]
exponents = [4,3,2,1,0] #As stated previously'
``>>> newlist = [4.99999999999948, 4.00000000000002, -0.200000000000000]
``>>> nexexp = [3,2,0]
因此,多项式将是形式 4.999999999999948 * x ^ 3 + 4.000000000000002 * x ^ 2 -0.200000000000000
任何建议都会非常有用!
答案 0 :(得分:9)
不要删除小元素,而是保留大元素:
newlist,newexp = zip(*[(x,e) for x,e in zip(my_list,exponents) if abs(x) > 1e-6])
您也可以使用过滤器:
newlist,newexp = zip(*filter(lambda x: abs(x[0]) > 1e-6, zip(my_list,exponents))))