2017-01-20 20 views
0

多項式の係数のリストが指数の降順であるとします(len(list) == xの場合、指数の範囲は整数x-1から0までです)。私は上記リストの "小さな"要素、つまりabs(element) > 0 and abs(element) < .000001を削除したいが、 "小さい"ではない多項式の指数を保持したい。リスト内の要素のブールステートメント

これを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]

、多項式は、* X^2 -0.200000000000000

4.999999999999948 * X^3 + 4.000000000000002形になります

ご意見は非常に役に立ちます。

答えて

9

代わりの小さな要素を削除する、大規模なものに保つ:

newlist,newexp = zip(*filter(lambda x: abs(x[0]) > 1e-6, zip(my_list,exponents)))) 
+0

ブリリアントソリューション:

newlist,newexp = zip(*[(x,e) for x,e in zip(my_list,exponents) if abs(x) > 1e-6]) 

あなたもフィルタを使用することができます!私のコードで欠けていることが1つあります。最初のリストの各指数は、実際には指数の降順で多項式の係数です。私はまた、「小さくない」係数の指数だけを含める方法を見つける必要があります。それを行う方法は?上記の例では、指数の望ましいリストは[3、2、0]です。ありがとう! –

+0

別の回答を得るには、別の質問をしたり、少なくとも元の質問を変更する必要があります。 – DyZ

+0

はちょうど私の質問を修正し終わった。今は固定されるべきです。 –

関連する問題