Python for循环与条件

时间:2013-09-05 03:42:15

标签: python

我是Python的新手(有C ++背景)。我的Python代码中有一个函数,它返回一些对象的数组(,我没有任何控件),如下所示:

def _get_object_array():
    object_array[]
    # Magically get array contents from somewhere
    # The objects have some fields like id, name etc.
    return object_array

然后在另一个函数中,我调用_get_object_array()只检索返回对象的id。

我所拥有的是:

id_array = []
id_array = [x.id for x in _get_object_array()] #<--

但我不想要返回数组中所有对象的id。相反,我只想存储符合某些条件的数组元素的id(例如id是偶数?)

我是否可以在标有<--的同一行中执行此操作,如下所示(btw只是伪代码)?

id_array = [if x.id % 2 == 0: x.id for x in _get_object_array()]

提前致谢。

/ R

2 个答案:

答案 0 :(得分:5)

是的:同样的话,你只是后退了语法。

id_array = [x.id for x in _get_object_array() if x.id % 2 == 0]

列表理解是惊人的,并且可以比大多数人意识到的做更多的工作; have a read of the relevant PEP

答案 1 :(得分:2)

是的,你非常接近:

id_array = [x.id for x in _get_object_array() if x.id % 2 == 0]