我想从给定的表达式中得到一个List
(理想情况下是一组 - 丢弃重复 - 但假设没有直接的方法可以做到这一点,我将只使用Union
)叶子。
例如,表达式
ArcTan[(-1 + 2*x)/Sqrt[3]]/Sqrt[3]
有LeafCount
18 个:
- -1 (3)
- 2 (3)
- 3 (2)
- X
- 弧棕
- 加
- 电源 (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]
(* ... *)
但我觉得必须有更好的方法。