```

    from sympy import *
    var('x y a b z')
    expr1 = x*y + x - 3 + 2*x**2 - z*x**2 + x**3
    print(collect(expr1, x))
    expr2=a*(2*x**2 - 1) + 4*x**3 + x*(b - 3)
    print(collect(expr2, x))
    #x**3 + x**2*(-z + 2) + x*(y + 1) - 3
    #a*(2*x**2 - 1) + 4*x**3 + x*(b - 3)
    #4*x**3+4*a*x**2+ x*(b - 3)-a
    
```

expr1は、うまくいきますが、  
expr2は、うまくいきません。  
よろしくお願いします。

追加情報  
metropolis様  
ありがとうございます。

①expandしてみました。  
②Wolfram|Alphaで実行してみました。  
4*x**3から、始まりませんでした。何か規則がありますか？

```

    from sympy import *
    var('x a b')
    expr2=a*(2*x**2 - 1) + 4*x**3 + x*(b - 3)
    print(expr2)
    print(collect(expand(expr2),x))
    # a*(2*x**2 - 1) + 4*x**3 + x*(b - 3)
    # 2*a*x**2 - a + 4*x**3 + x*(b - 3)
    
```

(参考)Wolfram|Alpha: Computational Knowledge Engine  
<https://www.wolframalpha.com/input/?i=Collect%28a%2a%282%2ax%2a%2a2-1%29%2b4%2ax%2a%2a3%2bx%2a%28b-3%29%29>
CC BY-SA 3.0
2017-03-29T13:29:18.880
33640
2017-10-17T06:58:30.990
2017-10-17T06:58:30.990
754
17199
question
python sympy
sympyのcollectの使い方を教えて下さい