代码之家  ›  专栏  ›  技术社区  ›  Dan

Mathematica:去掉findinstance结果中的“x->”

  •  8
  • Dan  · 技术社区  · 15 年前

    假设我有以下结果:

    a=FindInstance[2*b^2 + b^3 == b^4 + t && t < 10 && t > -1, {b, t}, 
      Integers, 20]
    {{b -> -1, t -> 0}, {b -> 0, t -> 0}, {b -> 1, t -> 2}, {b -> 2, 
      t -> 0}}
    

    我怎样才能摆脱“b->”;只得到b答案的数组?我可以通过以下方式到达一半:

    a[[All,1]]
    {b -> -1, b -> 0, b -> 1, b -> 2}
    

    但我如何才能做到:

    {-1, 0, 1, 2}
    

    谢谢

    2 回复  |  直到 13 年前
        1
  •  12
  •   Will Robertson    15 年前

    我可能从德雷夫斯的回答中遗漏了一些东西,但我一直认为你这样做只是简单地写:

    b /. a
    

    在的“基本示例”部分有一个这样的示例 the documentation for the Solve function ,使用相同的输出样式。

        2
  •  3
  •   Sjoerd C. de Vries    13 年前

    尽管威尔的回答是做这件事的典型方式,但我还是会提供一些选择,只是为了好玩。

    In[37]:= ans={{b -> -1, t -> 0},{b -> 0, t -> 0},{b -> 1, t -> 2},{b -> 2, t -> 0}};
    
    In[38]:= Cases[ans, (b -> a_) :> a, Infinity]
    
    Out[38]= {-1, 0, 1, 2}
    
    In[39]:= ans[[All, 1]][[All, 2]]
    
    Out[39]= {-1, 0, 1, 2}
    
    In[40]:= ans /. {b -> a_, _} :> a
    
    Out[40]= {-1, 0, 1, 2}
    
    In[41]:= (ans /. Rule -> List)[[All, 1, 2]]
    
    Out[41]= {-1, 0, 1, 2}