具有条件的列表理解中的语法错误

时间:2016-07-08 01:27:32

标签: python list python-2.7 list-comprehension

我正在使用一个库(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 个答案:

答案 0 :(得分:1)

正确的语法应该是:

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