python - 在 Python 中使用 map on 方法

标签 python dictionary

我有一些 Python 类:

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

和一个列表myList,其元素都是Class1Class2 的实例。我想创建一个新列表,其元素是在 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/

相关文章:

python - 在 Python 中传递数组/列表的子集引用作为参数

python - Spark 数据框添加带有随机数据的新列

algorithm - 如何找到所有点之间的最短连接?

python - 在 pandas 的数据框中创建列的唯一值字典

python - 在 Python 中解决 CodingBat 拼砖难题

python - 更改 seqID 并删除模式后面的部分

c# - Where() with Replace() in Dictionary.Where(p => p.Key is T)

python - 通过getattr动态获取dict元素?

python - TensorFlow:帮助创建服务输入函数

c++ - 如何在 C++ 中访问有序映射中的键范围/间隔?