А как насчет использования только встроенных функций?Например, zip
>>> [mag(a_, b_, c_) for a_,b_,c_ in zip(a, b, c)]
[10, 78, 30]
Плюс еще одна встроенная функция python, map , которая возвращает итератор и, таким образом, ускоряет работу и экономит память:
>>> gen = map(lambda uple:mag(*uple), zip(a, b, c))
>>> list(gen)
[10, 78, 30]