Как применить список функций к списку соответствующих параметров * fast * - PullRequest
0 голосов
/ 30 мая 2018

Дан список дескрипторов функций в Python, скажем:

f = [f1, f2, f3, f4]

и соответствующий список параметров:

a = [a1, a2, a3, a4]

Проблема Я хочу быстро вычислить: [f1 (a1), f2 (a2), f3 (a3), f4 (a4)].Я пытался понять список, но для моего приложения это было слишком медленно.Есть ли более естественный способ / быстрый способ сделать это?Я думаю какая-то векторизация.

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

узкое место, вероятно, вызовы функций.Не уверен насчет размеров результатов, которые могут повлиять на производительность посредством управления памятью.Поэтому убедитесь, что понимаете разницу между пониманием списка и выражением генератора.Если здесь проблема с памятью, перейдите к выражению генератора:

res = (fun(x) for fun, x in zip(f, a))
0 голосов
/ 30 мая 2018

Используйте zip для связывания элементов одного и того же индекса в двух списках.

res = [func(x) for func, x in zip(f, a)]

Оттуда, возможно, узким местом будут вызовы функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...