我正在使用一个库(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
答案 0 :(得分:1)
正确的语法应该是:
myarray = [orbital for orbital in Orbital if orbital.orbital_type == OrbitalType.d]