如何用一组不可迭代和不可迭代的参数来使用Python map?

How to use pythons map with a non-iterable and iterable set of parameters?

举个简单的例子,我不在乎实用性,只关心实施性。假设我用一些方法创建了一些类。我想创建一个列表,包含它们是否可以调用。所以我可以从以下方面来举这个例子:查找对象的方法

1
[method for method in dir(object) if callable(getattr(object, method))]

这对它所做的很好,但是如果真的是为了它,我想用地图,我有一个物体,这是一个不可辩驳的项目…

1
map(callable,map(getattr,object,dir(object)))

关注真正的问题:

我有一个不可更改的列表和一个不可更改的项目。什么是最好的解决方案,让我使用一些不可迭代的项目和一个不可迭代的项目,以便我可以利用地图?


我承认我不理解为什么,因为信用证有效,但是:

1
map(lambda x: callable(getattr(object, x)), dir(object))


有时候信用证就是正确的方式

1
2
>>> from itertools import izip, repeat, starmap
>>> map(callable, starmap(getattr, zip(repeat(object), dir(object))))

这也可以,但需要dir(object)两次

1
>>> map(callable, map(getattr, repeat(object, len(dir(object))), dir(object)))

最后

1
2
>>> from itertools import izip_longest
>>> map(callable, starmap(getattr, izip_longest([], dir(object), fillvalue=object)))


如果你不清楚上面的lambda是做什么的,你可以定义:

1
2
3
4
def myMap(fun1,obj,iterlist):
        def fun2(x):
            return fun1(obj,x)
        return map(fun2,iterlist)

然后,呼叫

1
map(callable,myMap(getattr,object,dir(object)))

例如:

1
map(callable,myMap(getattr,myMap,dir(myMap)))

尽管使用lambda更像是Python。