Próbuję wywołać object.method()
na liście obiektów.Jak używać map() do wywoływania metod klasy na liście obiektów
Próbowałem tego, ale nie może zmusić go do pracy prawidłowo
newList = map(method, objectList)
pojawia się błąd method is not defined
ale wiem, że to dlatego, że jest to metoda klasy, a nie lokalny funkcja.
Czy jest jakiś sposób, aby to zrobić z map()
lub podobną wbudowaną funkcją? Czy będę musiał użyć zrozumienia generatora/listy?
edytuj Czy możesz również wyjaśnić zalety lub przeciwstawić swoje rozwiązanie do korzystania z tej listy?
newList = [object.method() for object in objectList]
Mały dodatek: jeśli chcesz mieć możliwość używania dowolnej starej 'metody' i dowolnej starej' objectList': 'new_lister = metoda lambda, objectList: map (lambda obj: obj.method(), objectList)'. Teraz możesz zrobić "newList = new_lister (foo_method, list_of_foos)" itd. – 2rs2ts
Czy możesz wyjaśnić użycie funkcji lambda?Myślałem, że mapa przekazała elementy listy jako parametry funkcji. W jaki sposób funkcja lambda przyjmuje obiekty jako parametry? – Stephan
'lambda obj: obj.method()' jest odpowiednikiem: 'def foo (obj): obj.method'. Tak więc 'map' faktycznie przekazuje elementy listy jako parametry. Każdy element zostanie przekazany jako "obj", pierwszy argument lambda. Ma sens? –