从python中的对象列表中提取属性列表

时间:2010-04-29 18:31:17

标签: list loops python

我在python中有一个统一对象列表:

class myClass(object):
    def __init__(self, attr):
        self.attr = attr
        self.other = None

objs = [myClass (i) for i in range(10)]

现在我想提取一个包含该类的某个属性的列表(比如attr),以便传递一些函数(例如用于绘制该数据)

什么是pythonic方式,

attr=[o.attr for o in objsm]

也许派生列表并为其添加一个方法,所以我可以使用一些像

这样的习语
objs.getattribute("attr")

2 个答案:

答案 0 :(得分:63)

attrs = [o.attr for o in objs]是制作与您描述的列表类似的列表的正确代码。不要试图为此list创建子类。你有什么不喜欢的片段吗?

答案 1 :(得分:56)

你也可以写:

attr=(o.attr for o in objsm)

这样你就可以获得一个节省内存的生成器。有关更多好处,请查看Generator Expressions