2016-07-08 6 views
0

私は、列挙型の軌道が定義されているライブラリ(pymatgen)を使用しています。各要素はOrbitalTypeとして定義できます。 s、p、d、fの文字で定義される軌道タイプのいくつかのフレーバーがあります。次のコードは正常に動作します。条件付きのリストの理解からの構文エラー

In [35]: myorbitals = [] 
In [36]: for orbital in Orbital: 
    ....:  if orbital.orbital_type == OrbitalType.d: 
    ....:   myorbitals.append(orbital) 
    ....:  

In [37]: myorbitals 
Out[37]: [<Orbital.dxy: 4>, <Orbital.dyz: 5>, 
<Orbital.dz2: 6>, <Orbital.dxz: 7>, <Orbital.dx2: 8>] 

私はリストの内包表記を使用してmyarrayを構築するために同じことを行うためにしようとすると、私の質問は、なぜ私は、構文エラーが出るんですか?

In [38]: myarray = [orbital if orbital.orbital_type == OrbitalType.d for orbital in Orbital] 

    File "<ipython-input-38-a770dfff8a02>", line 1 
    myarray = [orbital if orbital.orbital_type == OrbitalType.d for orbital in Orbital] 
                   ^
SyntaxError: invalid syntax 

答えて

1

右の構文は次のようになります。

myarray = [orbital for orbital in Orbital if orbital.orbital_type == OrbitalType.d]