web-dev-qa-db-ja.com

pythonのオブジェクトのリストから属性のリストを抽出する

私はniform 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")

56
franjesus

以下を書くこともできます:

attr=(o.attr for o in objsm)

このようにして、メモリを節約するジェネレータを取得します。より多くの利点については Generator Expressions をご覧ください。

56
Reto Aebersold

attrs = [o.attr for o in objs]は、説明したようなリストを作成するための適切なコードでした。このためにlistをサブクラス化しようとしないでください。そのスニペットについて気に入らない点はありますか?

64
Mike Graham