Python:如何在map()函数中放置构造函数?

时间:2012-08-13 23:48:48

标签: python functional-programming

假设我有一个类,带有一个带整数的构造函数。我有一个整数列表。如何使用map()创建此类的对象列表,每个对象都使用相应的整数构建?

3 个答案:

答案 0 :(得分:16)

和其他任何功能一样吗?

>>> class Num(object):
...     def __init__(self, i):
...             self.i = i
... 
>>> print map(Num, range(10))
[<__main__.Num object at 0x100493450>, <__main__.Num object at 0x100493490>, <__main__.Num object at 0x1004934d0>, <__main__.Num object at 0x100493510>, <__main__.Num object at 0x100493550>, <__main__.Num object at 0x100493590>, <__main__.Num object at 0x1004935d0>, <__main__.Num object at 0x100493610>, <__main__.Num object at 0x100493650>, <__main__.Num object at 0x100493690>]

答案 1 :(得分:3)

map(lambda x: MyClass(..., x,...), list_of_ints)

还要考虑使用列表理解而不是map

[MyClass(..., x, ...) for x in list_of_ints]

上述任何一项都会返回您班级的对象列表,假设MyClass(..., x,...)是您的班级,而list_of_ints是您的整数列表。

答案 2 :(得分:0)

结帐itertools.starmap

In [1]: import itertools
In [2]: class C:
   ...:     def __init__(self, arg1, arg2):
   ...:         pass
   ...:     
In [3]: classes = itertools.starmap(C, [(1,2), (3,4)])
In [4]: print list(classes)
[<__main__.C instance at 0x10e99b7e8>, <__main__.C instance at 0x10e99b830>]