0

関数 (同じ関数) を、ループして 1 つずつアタッチせずに、配列のすべての要素にアタッチする方法はありますか?

以下のようなので

# create function foo from some computation
foo # some def    

# list
objects # list of objects

# attach same foo function to all elements of objects
# maybe using a decorator?

# loop through list to execute foo
for obj in objects:
    obj.foo()

これをもっと説明しましょう:

もちろん、次のようなオブジェクトの値を割り当てることができます

obj.attr = value

またはオブジェクトリストの場合:

for obj in objects:
    obj.attr = value

私が避けようとしているのは、単一のオブジェクトごとに attr の値を設定することですが、リスト/配列全体に関数を適用すると、各要素がその関数を実行します。

4

3 に答える 3

0

numpy vectorizeを使用してください! それはあなたにとって完璧に機能します!

from numpy import np
def fun(x):
    #do something
array = np.array(your_list)
vectfun = np.vectorize(fun)
answer = vectfun(array)

したがって、答えは、関数が適用された前のリストのすべてのアイテムで構成される結果の配列になります!! 次に例を示します。

>>> your_list = [1,2,3,4,5]
>>> def fun(x):
...     return x**x
... 
>>> array = np.array((your_list))
>>> vectfun = np.vectorize(fun)
>>> answer = vectfun(array)
>>> answer
array([   1,    4,   27,  256, 3125])
于 2013-06-03T02:36:15.520 に答える