我是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
答案 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]