与えられた式から葉のList
(理想的にはセット-繰り返しを破棄します-しかし、これを行う直接的な方法がないと仮定して、私は使用します)を取得したいと思います。Union
たとえば、式
ArcTan[(-1 + 2*x)/Sqrt[3]]/Sqrt[3]
LeafCount
18のを持っています:
- -1(3)
- 2(3)
- 3(2)
- バツ
- ArcTan
- プラス
- パワー(2)
- 有理数(2)
- タイムズ(3)
だから私は何かが欲しいです
{-1, 2, 3, x, ArcTan, Plus, Power, Rational, Times}
実は、本当に関数が欲しいだけなので
{ArcTan, Plus, Power, Rational, Times}
理想的ですが、おそらく、私がそれらを持っているときにこれらをフィルタリングするためのそれほど難しい方法はありません。
運が良かった
H[s_] := If[LeafCount[s] == 1, s, Head[s]]
H /@ Level[expr, 1, Heads -> True]
H /@ Level[expr, 2, Heads -> True]
(* ... *)
しかし、もっと良い方法があるに違いないと思います。