我有一些 Python 类:
class Class1:
def method(self):
return 1
class Class2:
def method(self):
return 2
和一个列表myList
,其元素都是Class1
或Class2
的实例。我想创建一个新列表,其元素是在 myList
的每个元素上调用的 method
的返回值。我试过使用“虚拟”基类
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
?
最佳答案
你可以使用
map(lambda e: e.method(), myList)
但我认为这样更好:
[e.method() for e in myList]
PS.: 我不认为曾经需要range(len(collection))
。
关于python - 在 Python 中使用 map on 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15723963/