オブジェクトのリストにobject.method()
を呼び出そうとしています。map()を使用してオブジェクトのリストのクラスメソッドを呼び出す方法
私はこれを試してみましたが、私はエラーmethod is not defined
を取得するが、私はそれがクラスメソッドではなくローカル関数であるので、それは知っている、それが適切に
newList = map(method, objectList)
動作させることはできません。
map()
などの組み込み関数でこれを行う方法はありますか?または、発電機/リストの理解度を使用する必要がありますか?
編集このリストの理解を使用して、利点や解決方法を説明することもできますか?
newList = [object.method() for object in objectList]
少し追加:古い 'method'と古い' objectList':new_lister = lambdaメソッド、objectList:map(lambda obj:obj.method()、objectList) 'を使いたい場合。今度は 'newList = new_lister(foo_method、list_of_foos)'などを行うことができます。 – 2rs2ts
ラムダ関数の使い方を説明できますか?私はマップが関数のパラメータとしてリストの要素を渡したと思った。ラムダ関数はどのようにオブジェクトをパラメータとして受け入れますか? – Stephan
'lambda obj:obj.method()'は、 'def foo(obj):obj.method'と同じです。だから、 'map'は実際にはリストの要素をパラメータとして渡しています。各要素はラムダの最初の引数である 'obj'として渡されます。理にかなっている? –