1

複数の属性を持つユーザー定義のPythonオブジェクトのリストで関数を繰り返して呼び出す方法はありますか?それがEntryと呼ばれ、属性名と年齢が設定されているとしましょう。

私が何かを言うことができるように

def func(name, age):
    //do something

def start(list_of_entries)
    map(func, list_of_entries.name(), list_of_entries.age()) 
    //but obviously the .name and .age of the object, not the iterable
    //these are the only two attributes of the class

functools.partial()の使用を考えていましたが、この場合でもそれが有効かどうかはわかりませんでした。

4

3 に答える 3

7

ラムダ関数を使用できると思います:

>>> def start(list_of_entries):
...     map((lambda x:func(x.name,x.age)), list_of_entries)

しかし、なぜループを使用しないのですか?:

>>> def start(list_of_entries):
...     for x in list_of_entries: func(x.name, x.age)

または、funcの結果が必要な場合:

>>> def start(list_of_entries):
...     return [func(x.name, x.age) for x in list_of_entries]
于 2012-09-07T22:46:49.350 に答える
0

名前と年齢だけが2つの属性である場合は、varsを使用できます。それ以外の場合は、関数に** kwargsを追加し、残りは無視します。

def func(name, age, **kwargs):
    //do something with name and age


def start(list_of_entry):
    map(lambda e: func(**vars(e)), list_of_entry)
于 2012-09-07T22:56:16.477 に答える
0

複数の属性を指定できるoperator.attrgetter()を使用できますが、明示的なリスト内包表記の方が優れています。

results = [f(e.name, e.age) for e in entries]
于 2012-09-07T22:51:04.280 に答える