Python 列表中元素的布尔语句
假设我有一个按指数降序排列的多项式系数列表(如果Python 列表中元素的布尔语句,python,python-3.x,boolean,Python,Python 3.x,Boolean,假设我有一个按指数降序排列的多项式系数列表(如果len(list)==x,那么指数的范围是从整数x-1到0)。我想删除上述列表中的“小”元素,意思是abs(element)>0和abs(element)
len(list)==x
,那么指数的范围是从整数x-1到0)。我想删除上述列表中的“小”元素,意思是abs(element)>0和abs(element)<.000001
,但保留多项式的非“小”指数
在Python3.0中,我到底如何做到这一点
以下是我在上下文中想要的示例:
my_list=[3.000000000000000e-12,4.9999999948,4.00000000000002,-0.00004253550000e-15,-0.2000000000]
指数=[4,3,2,1,0]#如前所述'
``>>>新列表=[4.999999948,4.00000000000002,-0.2000000000000000]
``>>>nexexp=[3,2,0]
因此,多项式的形式为
4.999999999999 48*x^3+4.00000000000002*x^2-0.2000000000000000
任何建议都会很有帮助 保留较大的元素,而不是删除较小的元素:
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))))
绝妙的解决方案!我在代码中遗漏了一件事:初始列表中的每个指数实际上都是多项式的系数,按指数的降序排列。我还需要找到一种方法,只包括系数的指数,而不是“小的”。有什么方法吗?在上面的例子中,期望的指数列表是[3,2,0]。谢谢要得到另一个答案,你必须问另一个问题,或者至少改变原来的问题。刚刚修改完我的问题。现在应该是固定的。
zip()
两个列表,然后按照上面的建议进行筛选。我对zip()和filter()非常缺乏经验。你能不能结合我的情况解释一下?