本文介绍了有条件的列表理解的语法错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用一个库(pymatgen),其中定义了一个枚举轨道.每个元素都可以定义为OrbitalType.轨道类型有几种,分别由字母s,p,d和f定义.以下代码可以正常工作.

I am using a library (pymatgen) in which a enum Orbital is defined. Each element can be defined as an OrbitalType. There are several flavors of orbital types which are defined by the letters s, p, d, and f. The following code works fine.

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时,为什么会出现语法错误?

My question is, why do I get a syntax error when I attempt to do the same thing to construct myarray using a list comprehension?

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

推荐答案

正确的语法应为:

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

这篇关于有条件的列表理解的语法错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-17 20:27