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