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

fra*_*sus 66 python loops list

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

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

objs = [myClass (i) for i in range(10)]
Run Code Online (Sandbox Code Playgroud)

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

什么是pythonic方式,

attr=[o.attr for o in objsm]
Run Code Online (Sandbox Code Playgroud)

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

objs.getattribute("attr")
Run Code Online (Sandbox Code Playgroud)

Mik*_*ham 70

attrs = [o.attr for o in objs]是一个正确的代码,用于制作与您描述的列表类似的列表.不要试图为此子类化list.有什么东西你不喜欢那个片段吗?

  • 只是它太冗长而且我会经常使用它,所以快捷方便会很方便.numpy的结构化数组arr ['colname']或重新排列arr.colname,已经提供了类似的东西,但在这种情况下我使用的是包含命名数据的对象(和一些函数). (2认同)

Ret*_*old 64

你也可以写:

attr=(o.attr for o in objsm)
Run Code Online (Sandbox Code Playgroud)

这样你就可以获得一个节省内存的生成器.有关更多优势,请参阅Generator Expressions.