3

私はPythonでいくつかのクラスを持っています:

class Class1:
    def method(self):
        return 1
class Class2:
    def method(self):
        return 2

myList要素がすべて または のいずれかのインスタンスでClass1あるリストClass2methodの各要素に対して呼び出されるの戻り値を要素とする新しいリストを作成したいと思いますmyList。「仮想」基本クラスを使用してみました

class Class0:
    def method(self):
        return 0
class Class1(Class0):
    def method(self):
        return 1
class Class2(Class0):
    def method(self):
        return 2

しかし、試してみるmap(Class0.method, myList)と、[0, 0, 0, ...]. 私はPythonに少し慣れていません.「ダックタイピング」が実際の継承よりも好まれると聞いているので、これは間違ったアプローチかもしれません. もちろん、できます

[myList[index].method() for index in xrange(len(myList))]

しかし、私はの簡潔さが好きですmap。これをまだ使用する方法はありmapますか?

4

3 に答える 3

4

使用できます

map(lambda e: e.method(), myList)

しかし、私はこれがより良いと思います:

[e.method() for e in myList]

 

PS .: .が必要になることはないと思いますrange(len(collection))

于 2013-03-30T22:03:16.713 に答える
3

これは最高です:

[o.method() for o in myList]

Map は、Haskell や Lisp を熱望する人々に好まれているようですが、Python には、代わりに使用できる優れた反復構造があります。

于 2013-03-30T22:02:57.517 に答える