1

我对 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 是偶数?)

有没有办法可以在下面标有<--如下标记的同一行中做到这一点(顺便说一句,这只是一个伪代码)?

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

提前致谢。

/R

4

2 回答 2

5

是的:同样的话,你只是把语法倒过来了。

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

列表推导是惊人的,可以做的工作比大多数人意识到的要多得多;阅读相关的 PEP

于 2013-09-05T03:43:40.520 回答
2

是的,你非常接近:

id_array = [x.id for x in _get_object_array() if x.id % 2 == 0]
于 2013-09-05T03:44:56.553 回答