2016-07-08 7 views
0

Ich benutze eine Bibliothek (Pymatgen), in der ein enum Orbital definiert ist. Jedes Element kann als OrbitalType definiert werden. Es gibt verschiedene Arten von Orbitaltypen, die durch die Buchstaben s, p, d und f definiert sind. Der folgende Code funktioniert einwandfrei.Syntaxfehler von Listenverstehen mit einer bedingten

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>] 

Meine Frage ist, warum bekomme ich einen Syntaxfehler, wenn ich das Gleiche zu tun versuchen, eine Liste Verständnis zu konstruieren myarray mit?

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 

Antwort

1

sollte die richtige Syntax sein:

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