2016-07-08 53 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]