10

整数を取るコンストラクタを持つクラスがあるとします。整数のリストがあります。map()それぞれの整数で構築された、このクラスのオブジェクトのリストを作成するにはどうすればよいですか?

4

3 に答える 3

21

他の機能と同じように?

>>> 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>]
于 2012-08-13T23:52:49.937 に答える
4
map(lambda x: MyClass(..., x,...), list_of_ints)

また、次の代わりにリスト内包表記を使用することを検討してくださいmap

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

MyClass(..., x,...)上記のいずれかは、がクラスであり、list_of_intsが整数のリストであると仮定して、クラスのオブジェクトのリストを返します。

于 2012-08-13T23:51:35.100 に答える
1

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>]
于 2013-12-07T23:29:08.207 に答える